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中文网其他相关文章!