选择排序

for (int i = 0; i < N; i++)

{ // 将a[i]和a[i+1..N]中最小的元素交换

int min = i; // 最小元素的索引

for (int j = i+1; j < N; j++)

if (less(a[j], a[min])) min = j;

exch(a, i, min);

}

第一次循环,i=0时,j=1,在第一行中找到最小下标赋值给min,再交换a[min]到a[0];

第二次循环,i=1,j=2,在第二行中找到最小下标赋值给min,再交换a[min]到a[1];

输入文件 String[] a = new In("tiny.txt").readAllStrings();

一个已经有序的数组或是主键全部相等的数组和一个元素随机排列的数组所用的排序时间竟然一样长

数据移动是最少的。

你可能感兴趣的:(选择排序)