• 排序-选择排序


    思想

    每一次遍历待排序的序列,记录最小(大)值的下标,和待排序第一个元素进行比较,如果小(大)与待排序第一个元素,交换

    实现(java)

    /**
     * @Author: fanjiajia
     * @Date: 2019/3/1 下午9:05
     * @Version: 1.0
     * @Description:选择排序
     */
    public class Main {
    
        public  static void main(String[] args) {
    
            int[] arr = {2,5,4,3,8,6,4};
            selectSort(arr);
            for (int i = 0; i< arr.length; i++){
                System.out.print(arr[i] + ",");
            }
        }
    
        /**
         * 选择排序
         * @param arr
         */
        private static void selectSort(int[] arr) {
            for (int i = 0,k =0; i < arr.length; i++, k = i){
                // 这一层查找后面最小值的下标
                for (int j = i+1; j <arr.length; j++) {
                    if (arr[k] > arr[j]) {  // 这个改为小与符合即为从大到小
                        k = j;
                    }
                }
                // 交换值
                if( i != k) {
                    int temp = arr[i];
                    arr[i] = arr[k];
                    arr[k] = temp;
                }
            }
        }
    }
    
    

    分析

    • 时间复杂度:$O(N^2)$
    • 空间复杂度: $O(1)$
    • 稳定性: 不稳定
  • 相关阅读:
    LwIP源代码文件目录解析
    规划2014!
    test
    111
    df
    第一次北京之行
    Android02--debug.keystore的注册信息
    Android01--开发环境搭建
    dfd
    1007
  • 原文地址:https://www.cnblogs.com/numen-fan/p/10458904.html
Copyright © 2020-2023  润新知