| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 数据结构与算法 -> 【和我一起学算法】排序篇——插入排序 -> 正文阅读 |
|
|
[数据结构与算法]【和我一起学算法】排序篇——插入排序 |
|
插入排序类似于打扑克,每抽到一张新牌都要跟已有的牌进行比较,插入到合适的位置中。 三、插入排序原理插入排序首先将数列分成两个部分,数列的第一个数为left部分,其余数为right部分。然后将right部分的数依次取出,插入到left部分中的合适位置上。当right部分为空时,数列就变成了有序数列,插入排序结束。 举例以数列[7,3,5,1,9,4]为例,进行插入排序。
第一轮排序将数列分成左右两部分,left部分是第一个数字,right部分是其他数字,取出第一个数7。 left:
right:
第二轮排序从right部分中取出第一个数3,插入到left部分中的合适位置,3比7小,放在7的右边。 ?left:
right:
第三轮排序从right部分取出当前的首位5,插入到left部分的合适位置中,5比3大比7小,5插入到3、7中间。 left:
right:
第四轮排序从right部分取出当前首位1,插入到left部分中合适位置,1比3、5、7都小,放left首位。 left:
right:
第五轮排序从right部分取出当前首位9,插入到left中,9比1、3、5、7都打,放末尾。 left:
right:
第六轮排序从left部分取出首位4,插入到left中,4比1、3大比5、7、9小,放在3后面,5前面。 left:
right: 第六轮排序后,right数列为空,排序结束。 插入排序的时间复杂度为 算法伪代码
完整源码InsertionSort.py
明天写归并排序和快速排序,一起学习,一起进步~
? |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/31 6:58:31- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |