选择排序算法实现原理:
每一轮从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数列最后,直到全部待排序数据元素全部排完
PS:选择排序是一个不稳定的排序方法(相同的两个数可能会颠倒顺序)
手动执行顺序:
31 11 25 53 76 34
将11(数组中的第一个元素作为最小值)
第一轮:11 31 25 53 76 34 (比较5次)
第二轮:11 25 31 53 76 34 (比较4次)
第三轮:11 25 31 53 76 34 (比较3次)
第四轮:11 25 31 34 76 53 (比较2次)
第五轮:11 25 31 34 53 76 (比较1次)
代码实现:
//选择排序算法
public class test2 {
public static void main(String[] args) {
// 声明一个乱序的数列(待排序)
int[] num = {31,11, 25, 53, 76, 34};
// 用于记录每次比较的最小值的下标;
int minIndex =0;
// 外层循环控制轮数
for (int i=0;i<num.length-1;i++){
// 每一轮设定一个最小值小标;
minIndex = i;
for (int j=i+1;j<num.length;j++){
if (num[minIndex]>num[j]){
// 记录值更换
minIndex = j;
}
}
// 判断需要交换的数下标是否是自己
if (minIndex!=i){
//此种交换方式可以不用声明中间变量,也可以选择中间变量方式进行数值的交换
num[minIndex] = num[minIndex]+num[i];
num[i] = num[minIndex]-num[i];
num[minIndex] = num[minIndex]-num[i];
}
}
// 选择排序后对数列进行打印输出
for (int n =0;n<num.length;n++){
System.out.print(num[n] +" ");
}
}
}
输出的结果:
PS:本博客宗旨用于学习,如有代码问题或其他问题可以留言 ,看到后第一时间会进行回复!!!!