选择排序
该秋招了,赶紧复习复习一下数据结构和算法吧~~。
选择排序应该是排序里面最好理解的了,加入有
{32,45,55,21,72,98} 这6个数字,每次遍历都找出剩余的数字里最小的与前面的替换,例如第一次遍历从第0个开始也就是32,便利之后发现21是最小的,然后就把21和32交换,即小的放在前面就变成了{21,45,55,32,72,98}。
第二次遍历因为21是最小的了所以就从45开始往后扫描发现32是最小的,所以交换之后顺序就是{21,32,55,45,72,98}。第三遍从55开始扫描………以此类推,最后形成了一个有序的序列。
归纳一下就是,进行n-1次遍历,把最小的放在第0个位置,第二小的放在第一个位置,第三小的放在第二个位置,以此类推……
代码如下
public static void selectSort(int[] num){
int minIndex;//记录当前扫描最小的位置
//i代表已经有序的数目
for (int i = 0; i < num.length; i++){
minIndex=i;
//从有序的后一个开始扫描
for (int j = i+1; j < num.length;j++) {
if(num[minIndex]>num[j]){
minIndex=j;
}
}
//扫描一遍值后,把最小的放到前面
swap(num,minIndex,i);
}
for(int a:num){
System.out.println(a);
}
}
private static void swap(int[] num, int i, int j) {
int temp=num[i];
num[i]=num[j];
num[j]=temp;
}