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

    每一步将一个待排序的记录,插入到一个已排好序的有序序列中,直到插完所有元素为止

       

    假设有一个无序序列 L0L1L2Ln-1

    • 先将序列中下标为 0 的元素L0 视为元素个数为 1 的有序序列
    • 接着,依次将 L1L2Ln-1 插入到这个有序序列中;这里就需要一个外部循环,用来获取下标 1 n-1 的元素
    • 插入过程,假设将 Li 插入到这个有序序列中,当插入 Li 时,前 i - 1 个元素肯定是有序的了
    • 所以,就需要将 Li 和之前 L0 ~ Li-1 的进行比较,确定需要插入的位置;
    • 这里需要一个内部循环,一般都是从后往前对比,即从下标 i-1 开始向 0 进行扫描对比
    import java.util.Arrays;
    /**
     * @date 2020/8/20 11:04
     */
    public class TestSort {
    
        public static void main(String[] args) {
    	       // 待排序数组 
            int[] arr = {8, 2, 4, 12, 4, 10, 3, 11, 1};
            System.out.println(Arrays.toString(arr));
    	       // 排好序数组
            int[] sort = insertSort(arr);
            System.out.println(Arrays.toString(sort));
        }
    
        private static int[] insertSort(int[] arr) {
            for (int i = 1; i < arr.length; i++) {
                int j = i - 1;
                int temp = arr[i];
                while(j >= 0 && arr[j] > temp) {
                    arr[j + 1] = arr[j];
    	                     j--;
                }
                arr[j + 1] = temp;
            }
            return arr;
        }
    }

  • 相关阅读:
    CF1450H2
    CF1379F2
    CF1217F
    CF1393E2
    CF1510H
    CF1514E
    CF1515G
    CF1516E
    在pycharm中导入PyMysql出错,解决方法
    搭建fastdfs文件服务器
  • 原文地址:https://www.cnblogs.com/sebastian-tyd/p/13580171.html
Copyright © 2011-2022 走看看