过程简单描述:
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法我们称之为选择排序。
为方便理解我还准备了动图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class SelectSort { public static int[] selectSort(int[] a) { int n = a.length; for (int i = 0; i < n - 1; i++) { int min = i; for (int j = i + 1; j < n; j++) { if(a[min] > a[j]) min = j; } int temp = a[i]; a[i] = a[min]; a[min] = temp; } return a; } }
|
咋们来测试一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package jj;
public class SelectionSort{ public static void main(String[] args) { int[] arr = {2,5,5,7,1,3,9,8,6,10}; int min; for(int i=0; i<arr.length-1; i++){ min = i; for(int j=i+1; j<arr.length; j++){ if(arr[min]>arr[j]){ min=j; } } if(min!=i){ int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } }
for(int k=0; k<arr.length; k++){ System.out.print(arr[k]+" "); } } }
|
输出结果: