• 直接插入排序


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

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

    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. }

  • 相关阅读:
    手机无线上网是什么意思
    划分Vlan时需要注意的问题
    嵌入式学习 基础概念合集
    已解决python -m pip install --upgrade pip命令升级报错
    vue3 官方地址
    Vuex存值取值与异步请求处理
    【卫朋】IPD | 华为流程体系:如何做好流程管理?
    OSEP 考试总结
    架构基本概念和架构本质
    CPSE深圳充换电展开幕,飞凌嵌入式引领智能充储技术新潮流
  • 原文地址:https://blog.csdn.net/dwl764457208/article/details/126900348