【排序算法】直接插入排序

来源:互联网 发布:聊天机器人 知乎 编辑:程序博客网 时间:2024/06/05 23:50

1.直接插入排序的定义

每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

2.直接插入排序的流程

  • 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

  • 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;

  • 依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

实例:

对数组{38,65,97,76,13,27,49}进行排序

这里写图片描述

3.直接插入排序的代码实现

public class DirectInsertSort {    private static void insertSort(int[] data) {        // 第1个数肯定是有序的,从第2个数开始遍历,依次插入有序序列        for (int i = 1; i < data.length; i++) {            int temp = data[i];            // 取出第i个数,和前i-1个数比较后,插入合适位置            int j = i - 1;            // 只要当前比较的数(data[j])比temp小,就把这个数后移一位            while (j >= 0 && temp < data[j]) {                data[j + 1] = data[j];                j--;            }            data[j + 1] = temp;        }    }    public static void main(String[] args) {        int[] data = {38,65,97,76,13,27,49};        System.out.println("排序前: "+ Arrays.toString(data));        insertSort(data);        System.out.print("直接插入排序后:"+ Arrays.toString(data));    }}

输出结果:

排序前: [38, 65, 97, 76, 13, 27, 49]直接插入排序后:[13, 27, 38, 49, 65, 76, 97]

4.算法分析

(1)直接插入排序的算法性能

这里写图片描述

(2)时间复杂度

  • 当数据正序时,执行效率最好,每次插入都不用移动前面的元素,时间复杂度为O(N)。

  • 当数据反序时,执行效率最差,每次插入都要前面的元素后移,时间复杂度为O(N2)。

  • 所以,数据越接近正序,直接插入排序的算法性能越好。

(3)空间复杂度

由直接插入排序算法可知,我们在排序过程中,需要一个临时变量存储要插入的值,所以空间复杂度为 1 。

(4)算法稳定性

直接插入排序的过程中,不需要改变相等数值元素的位置,所以它是稳定的算法。



本人才疏学浅,若有错,请指出
谢谢!

参考资料:排序三—— 直接插入排序

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 阳台挂衣服的单杆掉下来了怎么办 九个月婴儿受凉声音变沙哑怎么办 以汉字为主题的手抄报怎么办 用惯了笔画打字打不来拼音怎么办 老条石头给淤泥弄黑怎么办 新买的沙发垫子味很大怎么办 电脑表格中删去多余框线怎么办 农村教学点招不到学生老师怎么办 wps卡死了打的东西没保存怎么办 华为手机浏览器边框颜色变了怎么办 打印机打出来的字两边少怎么办 wps表格分页时表格断了怎么办 word里的表格一页放不下怎么办 表格上红色的字不能删除怎么办 渐变区的选择框变得很大怎么办 用乐秀编辑短片后两边有边框怎么办 安卓手机相机图标没有了怎么办 三星s6不充电就死机了怎么办 三星s7通话感应器不管用了怎么办 卡贴苹果8p一直跳激活怎么办? 宝宝添了小狗添过的袋子怎么办 猫咪卡在屋顶的缝隙里怎么办 大臂的图案纹小了怎么办 双面板已经贴片还要插件后焊怎么办 黑板摔在地上有木头屑怎么办 白衣服蓝袖子漂花了怎么办 白衣服泡了一夜袖子发黄怎么办 小孩的胳膊肘关节处摔断开了怎么办 生完孩子以后奶头总有脏东西怎么办 月经有黑乎乎的脏东西下不来怎么办 四季梅叶子打卷花从粉变白怎么办 新移栽的竹子出来太细怎么办 土培富贵竹长得太高了怎么办 毛竹加工厂被环保查了该怎么办? 领养姐姐家的孩子怎么办领养手续 孩子喝了点杯子变质发霉的水怎么办 杯子发霉没洗干净喝了水怎么办 小孩的咪咪头没有突出来怎么办 手被竹子刺了肿了怎么办 紫竹刚栽叶子发枯怎么办能活吗 移栽大田的水稻过施了氮肥怎么办