选择排序思想:
定义三个元素:in,out,min
in:内层循环
out:外层循环
min:最小值的索引
默认初始状态:out和min为最开始的索引,in从out后面的索引开始,依次往后移动比大小,每一次内层循环就是把min对应的值和in对应的值比较大小,如果min要比in大,此时把in赋值给min,等循环完毕后即得到了最小值的索引,再把min对应的值和out对应的值对调。
程序如下:
public static void SelectSort(int array[]) {
int out, in, min;
for (out = 0; out < array.length; out++) {
min = out;
for (in = out + 1; in < array.length; in++) {
if (array[in] < array[min]) {
min = in;//先记录下最小值位置的索引
}
}
//内层循环完毕一次再调换位置
Util.swap(array, out, min);
}
Util.show(array);
}
算法复杂度分析:比较次数的复杂度为n的平方,但是调换次数约为n次,比冒泡排序稍微好一点。