选择排序
理解:以数组为例,不断的选择剩余数组中最小的值
过程:首先从数组中选择最小的值和数组中的第一个值进行交换(如果第一个元素就是最小的值 那么就第一个和第一个交换),然后从余下元素中选择最小的值和第二个元素进行交换,依次类推,直到完成数组排序
效率:选择排序的效率取决于比较的次数
对于有N个元素的数组,需要进行(N^2)/2次比较和N次交换
特点:1)运行时间和输入无关(不管原始输入的数组是有序的,无序的,等值的,都需要进行相同的比较和交换,所以时间是一致的)
2)数据移动是最少的,和数组长度成线性关系
伪代码:
public void selectedSort(int[] a) {
int N = a.length;
for(int i = 0; i < N; i++) {
int min = i;
for(int j = i+1; j < N; j++) {
if(a[j] < a[min])
min = j;
}
exch(a[i], a[min]);//交换
}
}