JAVA算法实现之选择排序算法

选择排序算法实现原理:

每一轮从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数列最后,直到全部待排序数据元素全部排完

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] +" ");
        }
    }
}

 输出的结果:

JAVA算法实现之选择排序算法

PS:本博客宗旨用于学习,如有代码问题或其他问题可以留言 ,看到后第一时间会进行回复!!!!

上一篇:使用MVVM框架时,如何处理在页面动态渲染完之后需要发生的事件呢?


下一篇:小白学 Python(8):基础流程控制(下)