• 选择排序


        选择排序一共有数组大小的 -1 轮排序,每次找到当前这一轮元素的最小值,并且得到其下标,然后交换。

        时间复杂度O(n^2)。

    例:101,34,55,32,48,49  (从小到大的顺序)

    第一轮:32,34,55,101,48,49     (选取第一个数101为基准<当做最小值>,并且将当前的下标记为0,将基准后面的数与基准作比较,找到最小的数,更新最小数的值以及下标,将其与开始的基准交换位置)

    第二轮:32,34,55,101,48,49       (选取第二个数,即34为基准,后面操作同上)

    第三轮:32,34,48,101,55,49

    第四轮:32,34,48,49,55,101

    第五轮:32,34,48,49,55,101

       具体代码如下:

    import java.util.Arrays;
    
    public class SelectSort {
        public static void main(String[] args) {
            int[] arr = {101,34,55,32,48,49};
            selectSort(arr);
        }
        //选择排序
        public static void selectSort(int[] arr){
            for (int j = 0; j < arr.length-1; j++) {
            int minIdex = j; //最小值索引
            int min = arr[j]; //最小值
            for (int i = j+1; i < arr.length; i++) {
                if(min > arr[i]){
                    //更新最小值和索引
                    min = arr[i];
                    minIdex = i;
                }
            }
            if(minIdex !=j){ //说明最小值和索引更新了,进行交换,否则当前基准为最小值,不进行交换
            arr[minIdex] = arr[j];
            arr[j] = min;
            }
        }
        System.out.println("排序后 :"+Arrays.toString(arr));
        }
    }

    运行结果:

     

  • 相关阅读:
    try catch 和\或 finally 的用法
    postgresql与oracle对比
    今天遇到个let: not found
    NTLM相关
    【搜藏】net use命令拓展
    【shell进阶】字符串操作
    【网摘】网上邻居用户密码
    测试导航
    关系代数合并数据 left join
    真正的程序员
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12181326.html
Copyright © 2020-2023  润新知