选择排序的基本思想:每次选择出一个最大(最小)的数,放到最前(最后)。
其实选择排序和冒泡排序非常类似,每一次计算都是选出一个最大(最小)的数,差异在于处理的方式不一样。
第一次选择:用第一个数,逐次比对后面的所有的数,把更小的数放在第一位;
第二次选择:用第二个数,逐次比对后面的所有的数,把更小的数放在第二位;
......
第N-1次选择:用第N-1个数,比对第N个数,把更小的数放在第N-1位;
代码示意:
public static void Paixu() {
int a[] = { 11, 20, 9, 3, 8, 4, 72, 8, 16, 7, 8, 13, 24, 5, 20 };// 待排序的值
for (int i = 0; i < a.length - 1; i++) {// 取数,从第一个取到倒数第二个,即n-1个;
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
对比之前的冒泡排序,其实二者非常接近,都是每次找出最大(最小)的数,放在最前(最后),唯一的区别在于,找出最数过程中的区别。从时间复杂度来说,二者是一致的,都是双重循环;但是从数据交换的频次来讲,冒泡排序的次数可能会要多一些,一次相对而言,选择排序的效率要稍高于冒泡排序。