过程简单描述:
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法我们称之为选择排序。
为方便理解我还准备了动图:
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;
}
}
咋们来测试一下:
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]+" ");
}
}
}
输出结果:
1 2 3 5 5 6 7 8 9 10
欢迎大家关注公众号:小黄爱编程