博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.插入排序--直接插入排序
阅读量:6442 次
发布时间:2019-06-23

本文共 1120 字,大约阅读时间需要 3 分钟。

插入排序:

  插入元素分为:直接插入排序,二分插入排序,链表插入排序,希尔排序。

  (1)直接插入排序

    插入元素就像整理扑克牌一样,当我们摸到新牌时,需要针对手中已经有序的牌进行从后向前寻找,看最终插到哪里。

    插入排序主要思想:每步将待排序的元素插入到已有序的元素中,直到所有元素插入完毕。

    

    直接插入排序代码如下(仅供参考):

  

//直接插入排序    public static void insert_Sort(int[] arr,int low,int high){        if(arr==null||arr.length<=0||low>high) return;        for(int i=low+1;i<=high;i++){            int value=arr[i],k=i;            for(int j=i-1;j>=0&&arr[j]>value;j--){                arr[j+1]=arr[j];                k=j;            }            if(k!=i){                arr[k]=value;            }        }    }    public static void main(String[] args){        int[] arr={1,4,2,3,5,9,6,7,8,5,5,4,2,1,1,1,2,2,2,3,3,3};        insert_Sort(arr,0,12);        System.out.println(Arrays.toString(arr));    }

    直接插入排序特点:

    (1)具有稳定性。由于直接插入排序不会将相同元素进行交换,因此是稳定排序。

    (2)平均情况下需要N2/4次比较和N2/4次交换。最好情况下需要N-1次比较和0次交换(元素已有序)。最坏情况下需要N2/2次比较和N2/4次交换(元素逆序)。

    (3)适用于数据量较小的排序。尤其适用于元素距离它的最终位置不远的元素排序。

    (4)交换操作和倒置操作数量相同,每次交换都会减少一次倒置操作。

    (5)jdk源码中,经常将其用于某些算法的较小数组的引用,例如快速排序,当元素个数小于47时使用插入排序完成元素的排序操作。

    

转载于:https://www.cnblogs.com/shuaiqichengxuyuan/p/6661396.html

你可能感兴趣的文章
linux常用命令
查看>>
Docker在Windows系统下的安装及简单使用介绍
查看>>
CentOS用yum安装X Window
查看>>
gpfs 修改 副本数
查看>>
Ubuntu16.4安装Wordpress
查看>>
模块和包
查看>>
socket编程总结
查看>>
逻辑回归模型(LR)
查看>>
[读书笔记]JavaScript 闭包(Closures)
查看>>
Django restfulframework 开发相关知识 整理
查看>>
linux信息查看手记
查看>>
Delphi考虑sql注入 QuotedStr
查看>>
SpringBoot学习四:整合Mybatis分页插件 PageHelper
查看>>
java集成jpush实现客户端推送
查看>>
Swoole WebSocket 的应用
查看>>
219. 单页应用 会话管理(session、cookie、jwt)
查看>>
【比赛】百度之星2017 初赛Round B
查看>>
AFNetworking之AFSecurityPolicy深入学习
查看>>
JavaScript中的“this”
查看>>
Java中abstract class和interface的区别
查看>>