版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Will_cruise/article/details/86305419
选择排序的流程:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
注意:
- 比较的轮数为:num.length-1(即:比数组中元素个数少1)
- 第i轮比较会确定数组中第i小的位置,比较位为j=i+1(第i轮比较开始,即把数组的第i位当作最小的比较对象去比较,因为i之前的已经排好)
package javaTest;
//选择排序:每轮排序开始,选择数组的第i位作为比较对象,循环比较找出第i小的位置,在循环结束后把第i小交换到其应当在的位置
public class Test2 {
public static void main(String []args) {
int []num = {2,5,18,3,23,89,8};
int temp=0;//临时交换数据用
for(int i=0;i<num.length-1;i++) {//需要比较的轮数
int minindex=i;//第i轮比较开始,把数组的第i位当作最小的比较对象去比较
for(int j=i+1;j<num.length;j++) {//第i轮比较的开始位置及比较次数
if(num[minindex]>num[j])
minindex=j;//找到最小数的位置,并更新
}
if(minindex!=i) {//如果第i轮中数组的第i位不是第i小,则交换
temp=num[i];
num[i]=num[minindex];
num[minindex]=temp;
}
}
for(int i=0;i<num.length;i++) {
System.out.print(num[i]+",");
}
}
}
/*
2,5,18,3,23,89,8 轮数 更新后
2,5,18,3,23,89,8 0 minindex=0
2,3,18,5,23,89,8 1 minindex=3
2,3,5,18,23,89,8 2 minindex=3
2,3,5,8,23,89,18 3 minindex=6
2,3,5,8,18,89,23 4 minindex=6
2,3,5,8,18,23,89 5 minindex=6
*/
拓展:
选择排序是一种不稳定型排序方法。