选择排序
第1趟,在待排序记录array[0]~array[array.lenght-1]中选出最小的记录,将它与array[0]交换;第2趟,在待排序记录array[1]~array[array.lenght-1]中选出最小的记录,将它与array[1]交换;以此类推,第i趟在待排序记录array[i]~array[array.lenght-1]中选出最小的记录,将它与array[i]交换,使有序序列不断增长直到全部排序完毕。
时间复杂度:O(n^2)。因为有跳跃式的比较和交换,所以这个算法不稳定。
让我门来分析一下下面的例子:
我们用 java 来实现一下这个算法
public static void selectSort(int[] array){ int temp = 0; int minIndex = 0; for(int i = 0;i < array.length;i++){//比较的趟数 minIndex = i; for(int j = i+1;j < array.length;j++){//每次比较它前面的都已经排好序了,在未排好序的值里面找出最小值,赋给最前面的额那个数。 if(array[minIndex] > array[j]){ temp = array[minIndex]; array[minIndex] = array[j]; array[j] = temp; } } } }
测试:
public static void main(String[] args){ int[] array = {23,31,12,21,3,1,5}; selectSort(array); show(array); }结果:1 3 5 12 21 23 31