• 直接插入排序


    思想: 将待排序数组看成无序区, 排序开始时,取出无序区的元素放入到有序区的合适位置上 

    自序列的插入方式为从后往前依次比较插入

    7 1 8 2 3 9 6 

    初始时, 7 元素视为一个已排好序的子序列 

    遍历到1时,    比较 子序列中  7 大于1  插入到子序列的后面 

    此时子序列   [1,7]

    遍历到元素 8 时  与子序列中的元素进行比较  8大于7   插入到子序列的后面 

    此时子序列 [1,7,8]

    遍历到元素2 时, 与子序列中的元素进行比较 2 小于8  2 小于7 2 大于1 插入到1的后面 

    此时子序列[1,2,7,8]

    遍历到元素3时, 与子序列中的元素进行比较 3 小于8 ,3小于7, 3大于2 插入到2后面的位置

    此时子序列 [1,2,3,7,8]

    遍历到元素9时, 与子序列中的元素进行比较  9 大于8  插入到8后面的位置 

    此时子序列 [1,2,3,7,8,9]

    遍历到元素6时, 与子序列中的元素进行比较  6 小于9 6小于8 , 6 小于7 6 大于3 插入到3后面的位置

    此时子序列[1,2,3,6,7,8,9]

    完成排序

    代码

    1. public int[] InsertSort(int[] sourceArray){
    2. int[] arr=Array.copyOf(sourceArray, sourceArray.length)
    3. //从下标为1的元素开始选择合适的位置插入,因为下标0只有一个元素,默认在有序子序列
    4. for (int i=1; i < arr.length; i++){
    5. //记录要插入的数据
    6. int tmp=arr[i];
    7. // 从已经排序的子序列的右边开始比较, 找到比其小的数
    8. int j = i;
    9. while (j >0 && tmp < arr[j-1]){
    10. arr[j] = arr[j-1];
    11. j--;
    12. }
    13. //存入比其小的数, 插入
    14. if(j !=i){
    15. arr[j]=tmp;
    16. }
    17. }
    18. return arr;
    19. }

  • 相关阅读:
    vue3中刷新当前页面的三种方法
    记忆化搜索
    [GXYCTF 2019]Ping Ping Ping题目解析
    CSS学习笔记(三)
    在playfab server上部署unreal linux server
    Linux命令行下复制粘贴文件
    读取 resources 目录下的文件路径的九种方式,你知道多少?
    R语言使用names函数为dataframe数据中的所有列重命名
    vscode 常用插件
    Python怎么打印彩色字符串
  • 原文地址:https://blog.csdn.net/dwl764457208/article/details/126900348