zoukankan      html  css  js  c++  java
  • 插入排序

        /**
         * 插入排序
         * 时间复杂度O(n^(1-2))
         * @param arr
         */
        private static void insertSort(int[] arr) {
            int insertVal = 0;
            int insertIndex = 0;
    
            for (int i = 1; i < arr.length; i++) {
                //定义待插入的数
                insertVal = arr[i];
                // 即arr[1]的前面这个数的下标
                insertIndex = i - 1;
    
                /**
                 * 给insertVal 找到插入的位置
                 *              说明
                 *              1. insertIndex >= 0 保证在给insertVal 找插入位置,不越界
                 *              2. insertVal < arr[insertIndex] 待插入的数,还没有找到插入位置
                 *              3. 就需要将 arr[insertIndex] 后移
                 */
                while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
                    arr[insertIndex + 1] = arr[insertIndex];
                    insertIndex--;
                }
                // 当退出while循环时,说明插入的位置找到, insertIndex + 1
    
                //这里我们判断是否需要赋值
                if (insertIndex + 1 != i) {
                    arr[insertIndex + 1] = insertVal;
                }
            }
    
        }
    
  • 相关阅读:
    UVA 10066 The Twin Towers
    UVA 10192 Vacation
    hdu 5018 Revenge of Fibonacci
    hdu 5108 Alexandra and Prime Numbers
    UVA 10252
    UVA 10405最长公共子序列
    数塔
    hdu 2602
    面向对象(五)
    面向对象(三)
  • 原文地址:https://www.cnblogs.com/ding-dang/p/13391074.html
Copyright © 2011-2022 走看看