选择排序是一种最简单的排序算法。首先,选出数组中最小(或最大)的元素,将它与数组中的第一个元素进行交换;然后,从剩下待排序的元素中找出最小(或最大)的元素,并将它与待排序的第一个元素进行交换;按照这种方法一直进行下去,直到整个数组排序完。
public void selectionSort(int[] array) {
// 从小到大排列
for (int i=0; i<array.length-1; i++) { //第i趟排序,共N-1趟
int min = i;
for (int j= i+1; j<array.length; j++) { //内部循环,共N-1趟
if (array[j] < array[min]) {
min = j; //记下目前找到的最小元素的位置
}
}
if (min != i) { //上面内部比较时,只选择小于,这里 min!=i 可以防止排序把数组的稳定性打破
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
for (int num : array) {
System.out.print(num+" ");
}
}
对于长度为N的数组,选择排序需要大约N^2/2次比较和N次交换。