• 21天打卡挑战 - 经典算法之直接插入排序


    ​CSDN打卡活动产出

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
    想系统/深入学习某技术知识点…
    一个人摸索学习很难坚持,想组团高效学习…
    想写博客但无从下手,急需写作干货注入能量…
    热爱写作,愿意让自己成为更好的人…

    创作计划


    机缘

    实战项目中的经验分享
    日常学习过程中的记录
    通过文章进行技术交流

    收获

    希望以此结交到志同道合的朋友

    日常

    平均每周产出2-3篇文章.

    有限的精力下,只能少一些玩游戏的时间,陪女朋友的时间不敢少

    憧憬

    期待粉丝上万 浏览过百万!!

    **

    学习计划

    学习目标

    永远充满热情,坚持21天学习打卡

    学习内容

    直接插入排序

    学习日记


    学习知识点

    原理含义

            每次从原有数据中取出一个数,插入到之前已经排好的序列中,直到所有的数全部取完,那么新的有序排列也就完成了。
            通俗一点的解释就是好比我们在打扑克抓牌,所有的牌扣在桌面上,我们一张一张的抓,抓起一张就在手里把它排好。那么等我们把所有的牌都抓起来之后,手里的牌也都是有序的了。

     

    算法流程

            对于计算机来说,我们必须要详细的告诉它如何比较大小,以及如何确定位置,毕竟它不能像我们一样,“一眼"就看出位置。试想一下,当数据量比较多的时候,我们也是需要一个一个的看过来,然后才能确定新插入元素的位置。

     

    算法复杂度

    时间复杂度:平均O(n^2),最好O(n), 最坏O(n^2)
    空间复杂度:O(1)

    插入排序动图

     C代码

    1. void insertsort(int array[],int len){
    2. int i,j;
    3. //第一个for循环 遍历无序序列
    4. for(i=1;i//从数组的第二个元素开始依次遍历无序序列
    5. int tem = array[i]; //临时保存将要排序的元素
    6. //第二个for循环遍历有序序列
    7. for(j=i-1;tem<=array[j]&&j>=0;j--){ //将待排序元素依次和有序序列中的元素比较
    8. //待排序元素 小于 有序序列中当前元素时 将该元素后移
    9. array[j+1] = array[j];
    10. }
    11. array[j+1] = tem; //待排序元素 大于 有序序列最后一个元素 直接将该元素插入到有序序列最后
    12. }
    13. printf("\n排好了!\n\n");
    14. }

    念念不忘,必有回响

  • 相关阅读:
    MYSQL高级篇-----索引优化分析
    机器视觉技术在工业智能化生产中的应用
    STM32 中断详解
    阅读mmdetection3d框架的源码探索其构建dataset的流程
    Nginx配置SSL证书
    node.js基于JavaScript网上商城毕业设计源码261620
    《ClickHouse原理解析与应用实践》读书笔记(2)
    【AI理论学习】语言模型:深入理解GPT-2计算掩码自注意力过程,了解GPT-3工作原理
    node.js学习之模块化、npm
    Day1--什么是网络安全?网络安全常用术语
  • 原文地址:https://blog.csdn.net/qq_52213943/article/details/126217194