选择排序是每次循环都从未被选择的数组中选取一个最小值放在数组前面。第一次循环将全部数组中的最小值放在下标为0的位置,此时,下标为0的数被视为已被选择数组;第二次循环将从未被选择的数组从选出第二最小值放在下标为1的位置……由此循环到数组中不包含未被选择的数为止。
归并排序的最好、最坏和平均时间复杂度都是O(n^2)。
/**
* Created by lkmc2 on 2018/1/8.
*/
public class SelectSort {
public static void selectSort(int[] array) {
for (int i = 0; i < array.length; i++) {
//标签当前下标为最小值下标
int min = i;
//从i下标的后一位到数组最后一位选出最小值的下标
for (int j = i + 1; j < array.length; j++)
if (array[j] < array[min])
min = j;
//将最小值的下标与i位置的值交换
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
public static void main(String[] args) {
int[] array = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
selectSort(array);
for (int num : array) {
System.out.print(num + " ");
}
}
}