Java中的選擇排序是一種不斷尋找未排序部分中最小元素並將其保留在開頭的排序方法(用於升序排序)。過程將重複進行,直到輸入數組完成排序。此外,在選擇排序中,我們將輸入數組分為兩個子數組,其中一個數組用於排序元素,另一個數組用於未排序元素。一開始,已排序的子數組中不會有任何元素。讓我們在下一節中詳細了解選擇排序的工作原理。
選擇排序以簡單的方式工作,它從輸入數組中保留兩個子數組。他們是:
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
以下是用來選擇排序的演算法
讓我們透過一個例子來理解選擇排序。以下是必須排序的輸入數組。粗體藍色的元素將作為排序數組的一部分。
第 1 步:將 MIN 指標設定到第一個位置。所以,MIN指針指向15。
最小:= 15
第 2 步:透過與其餘元素進行比較來找到最小元素。比較15和21,15是最小的。所以,在這種情況下,最小的不會改變。
最小:= 15
比較15和6,6是最小的。
最小:= 6
比較6和3,3是最小的。
最小:= 3
在這種情況下 3 也會更小,因為 19 大於 3。
最小:= 3
最小:= 3
最後,在本次迭代中,發現 3 是最小的。
第 3 步:將最小元素與位置 0 的元素交換。
第 4 步: 將 MIN 指標增加到下一個位置。
第 5 步: 透過與其餘元素進行比較來找到下一個最小元素。
最小:= 21
最小:= 6
最小:= 6
最小:= 6
最小:= 6
第 6 步: 將最小元素與位置 1 的元素交換。
重複此過程,直到形成排序數組,如下所示。
如上所述,選擇排序是基於查找最小值和交換。現在,讓我們看看如何使用 Java 實作選擇排序。
代碼:
import java.util.*; public class SelSortExample { //Method that implements Selectionsort public static void selsort(int[] arr) { int n=arr.length; //length of the array for(int i=0;i<n-1;i++) { int MIN=i; //set the first position as minimum System.out.println("Sorting based on Number "+(i+1)); //Find the smallest element by comparing with the element in MIN position for(int j=i+1;j<n;j++) { System.out.println("Comparing "+ arr[MIN] + " and " + arr[j]); if(arr[j]<arr[MIN]) { System.out.println(arr[MIN] + " is greater than " + arr[j] ); MIN=j; } } //Swap the smallest element with element in MIN position int temp=arr[i]; arr[i]=arr[MIN]; arr[MIN]=temp; } } public static void main(String[] args) { int[] arr= {15,21,6,3,19,20}; // input array System.out.println("Elements in the array before Sorting: "+ Arrays.<em>toString</em>(arr)); <em>selsort</em>(arr);//calling the selection sort method System.out.println("Elements in the array after Sorting: "+Arrays.<em>toString</em>(arr)); } }
範例輸出:
在上面的程式中,我們有兩個方法-main方法和sell sort方法。 main 方法呼叫 sell sort 方法,傳遞輸入陣列作為參數。最小元素將被識別並與 MIN 指向的元素交換。
The selection sort can also be used where the input array is not defined in code. Let us see how it works using the below program.
Code:
import java.util.*; public class SelectionSortExample { public static void main(String args[]) { int n, i, j, tempvar; Scanner <u>sc</u> = new Scanner(System.in); //To take the input from user System.out.print("Enter the size of array : \n"); n = sc.nextInt(); int array[] = new int[n]; //<u>initialising</u> the array System.out.print("Enter the elements that need to be inserted in the array : \n"); //inserting the elements to the array for(i=0; i<n; i++) { array[i] = sc.nextInt(); } System.out.print("array before Sorting: \n"+ Arrays.toString(array)); System.out.print("\nSorting begins here..\n"); for(i=0; i<n; i++) { for(j=i+1; j<n; j++) { if(array[i] > array[j]) { tempvar = array[i]; array[i] = array[j]; array[j] = tempvar; } } } System.out.print("Array after Sorting is :\n"); for(i=0; i<n; i++) { System.out.print(array[i]+ " "); } } }
Sample Output:
Here, the input elements given by the user will be compared with the temporary variable and swapped. The process will be repeated until a sorted array is formed.
This sorting technique is used for its simplicity and certain other performance advantages over other more sorting techniques.
The selection sort does not work efficiently on large lists as it consumes more time for comparison. Selection sort is a method in which an input array will be divided into two subarrays in order to keep them sorted and unsorted elements. The minimum element in the array will be swapped with the element in the first position, and the process continues until a sorted array is formed.
以上是Java 中的選擇排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!