码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 排序算法-插入排序法(InsertSort)


     排序算法-插入排序法(InsertSort)

    1、说明

    插入排序法是将数组中的元素逐一与已排序好的数据进行比较,先将前两个元素排序好,再将第三个元素插入适当的位置,也就是说这三个元素仍然是已排序好的,接着将第四个元素加入,重复此步骤,直到排序完成为止。可以看作是在一串有序的记录R1,R2,...,Ri中插入新纪录R,使得i+1个记录排序妥当。

    2、算法分析

    1. 最坏情况和平均情况均需比较:(n-1)+(n-2)+(n-3)+...+3+2+1=\frac{n(n-1)}{2}次,时间复杂度为O(n^{2})。最好情况时间复杂度为O(n)。
    2. 插入排序是稳定排序法。
    3. 因为只需一个额外的空间,所以空间复杂度为最佳。
    4. 这种排序法适用于大部分数据已经过排序的情况,也适用于往已排序数据库中添加新数据后再进行排序的情况。
    5. 由于插入排序法会造成数据的大量搬移,因此建议在链表上使用。

    3、C++代码 

    1. #include
    2. using namespace std;
    3. int main() {
    4. int data[6] = { 9,7,5,3,4,6 };
    5. cout << "原始数据:" << endl;
    6. for (int i = 0; i < 6; i++) {
    7. cout << data[i] << " ";
    8. }
    9. cout << endl;
    10. int i;
    11. int j;
    12. //第1次:
    13. //7 9 5 3 4 6
    14. //第2次:
    15. //5 7 9 3 4 6
    16. //第3次:
    17. //3 5 7 9 4 6
    18. //第4次:
    19. //3 4 5 7 9 6
    20. //第5次:
    21. //3 4 5 6 7 9
    22. for (i = 1; i < 6; i++) {
    23. int temp = data[i];
    24. j = i - 1;
    25. //temp > data[j] 从大到小排序的条件
    26. //temp < data[j] 从小到大排序的条件
    27. while (j >= 0 && temp < data[j]) {
    28. data[j + 1] = data[j];
    29. j--;
    30. }
    31. data[j + 1] = temp;
    32. }
    33. cout << "最终数据:" << endl;
    34. for (int i = 0; i < 6; i++) {
    35. cout << data[i] << " ";
    36. }
    37. cout << endl;
    38. return 0;
    39. }

    输出结果 

  • 相关阅读:
    Android查看公钥与MD5
    全自动调节灯光强度的实现(仿真+程序+文档)
    @Value的注入与静态注入 与 组件中静态工具类的注入
    MyBatis学习:使用Like进行模糊查询,MyBatis怎么传参或者组装模糊条件
    探索高效开发神器:Blackbox AI(免费编程助手)
    -树的高度-
    无线蓝牙耳机什么牌子好一点?2022年蓝牙耳机推荐
    头歌平台云计算实验
    四种常用的排序算法
    notepad++配合正则表达式分组模式处理文本转化为sql语句
  • 原文地址:https://blog.csdn.net/qq_40660998/article/details/133782217
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号