独学而无友,则孤陋而寡闻。
前面一篇博客写了冒泡排序,接着我们总结一下选择排序
首先要了解选择排序的基本思想,从第一个元素开始,取出下一个元素比较,如果该元素小于前一个元素则插入到前一个元素的前面,文字表述比较抽象,还是通过案例来说明。
当我们定义一个数组{5,4,3,2,1},看下图:
通过四轮比较每次将该轮最小的值插入到前面去,一次进行排序从而实现排序的功能。
下面我们来看代码:
public class TestInsertSort {
public static void main(String[] args) {
int[] array = {5,4,3,2,1};
//外层控制轮数,一共四轮,将i=1是为了后面的j和j-1好比较
for (int i = 1; i < array.length; i++) {
//内层控制两两比较,将较小的插入在前面
for (int j = i; j > 0; j--) {
if(array[j]<array[j-1]){
int temp = array[j];
array[j] = array[j-1];
array[j-1]=temp;
//当检测到后一位不比前一位小,则退出循环减少检索次数
}else{
break;
}
}
}
for (int i : array) {
System.out.println(i);
}
}
}
值得注意的是,内层循环比较时也是相邻两个比较,较小的放到前面,比到后面相当于把需要比较的数字插入到合适的位置。