码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 七大排序之直接插入排序


    目录

    1、基本思想

    2、代码讲解和实现

    3、特性总结

    3.1 时间复杂度:

    3.2 空间复杂度:

    3.3 适合场景:


    时间复杂度:O(n)  ~ O(n^{2}) 

    空间复杂度:O(1)

    稳定性:  稳定      

    1、基本思想

            直接插入排序是一种简单的插入排序法,其思想就是把待排序的数按照其大小逐个插入到一个已将排好的有序序列中,直到所有的记录插入完为止。

    实际中,我们在玩扑克牌时,就与运用了插入排序的思想。

    2、代码讲解和实现

            当插入第i(i>=1)个元素时,前面的array[0]、array[1].....array[i-1] 已经排好序。

    第一步:定义一个 j 变量并赋值为i-1,同时定义一个 val 变量存储一下 array[i]的值。

    第二步:让array[j] 与 val 进行比较

            如果 array[j] 大于 val , 就把array[j]向前挪一步,也就是 array[j+1] = array[j]。

            如果 array[j] 小于等于 val,就把 val 放到 array[j+1]中。

    j 必须 大于等于0 ,要不然会越界。

    1. public static void insertSort(int[] array){
    2. for (int i = 1; i < array.length; i++) {
    3. int j = i-1;
    4. int val = array[i];
    5. for(; j >= 0 ; j--){
    6. if(array[j] > val){
    7. array[j+1] = array[j];
    8. }else{
    9. break;
    10. }
    11. }
    12. array[j+1]= val;
    13. }
    14. }

    3、特性总结

    3.1 时间复杂度:

    当数据有序时,直接插入排序耗时最少,为 O(n)

    数据有序时,外循环每遍历一个元素,都比前 i-1个元素都大,内循环相当于没有执行。总的时间就是遍历数组的时间。

    当数据逆序时,耗时最多,为 O(n^{2})

    数据逆序,每次插入第 i 个元素,内循环都要遍历 i-1 次。当 n 数排序完,也就是遍历了 \tfrac{n*(n-1)}{2}次

     3.2 空间复杂度:

           因为直接插入排序是内部排序,所以空间复杂度为 O(n)

    3.3 适合场景:

            当数据基本上是有序的时候,使用直接插入排序

  • 相关阅读:
    java程序通过监听端口获取电力104报文并解析104报文
    MES管理系统功能模块之质量管理
    mysql 使用idb文件恢复数据
    LCT (link cut tree)动态树学习
    Docker: 小白之路九(从0搭建自己的Docker环境centos7)
    用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块
    音频编辑软件Steinberg SpectraLayers Pro mac中文软件介绍
    流媒体传输 - RTSP 协议
    2 Day DBA Part1
    HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题
  • 原文地址:https://blog.csdn.net/weixin_53564801/article/details/125965951
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号