概述
选择排序通俗易懂的说法就是在每一轮的排序中找出每个位置对应的数字,比如在第一轮中,找出最小(大)的数字并且放在第一位,第二轮找出第二小(大)的数字放在第二位,以此类推,在第n-1轮里找出倒数第二小(大)的数字放在倒数第二位,剩下的最后一个位置就是最大(小)的数字,选择排序也是比较基础的排序方式,跟冒泡排序其实差不多,都是程序员需要会手写的排序算法
图解
如上图,该图是第一轮的详细图解。第一次默认min值是左边第一个,即min=5,然后让min值与剩下的值一一比较。即第一次min值与8比较,5小于8,所以min值还是5。第二次,min值与1相比较,5小于1。这时,min值变成1,即min=1,但是5和1的位置不交换。第三次,min值与4比较,4大于1,min值还是1。第四次,min值与3比较,3大于1,min值还是1。此时,第一遍的循环已经结束,然后让现在的min值与第一次的min值的位置相交换。即1与5的位置相交换。
如上图,该图是完整的选择排序过程,第一轮找出最小的min=1,并且放在第一位,第二轮找出第二小的min=3,放在第二位,第三次,找出第三小的min=4,放在第三位,第四次,找出第四小的min=5,放在第四位,此时只剩下第五位的数字8,自然而然的就是最大的数,且位置的最后一位。
代码
public void sort(int array[]){
//循环控制轮数,只需要进行到倒数第二轮,到此轮就剩下两个数,此轮结束后数组就已经排序好了
for(int i=0;i<array.length-1;i++){
//寻找每轮最小的数
int min = i;
//循环控制每轮找最小数字的次数
for(int j