博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
直接插入排序
阅读量:7174 次
发布时间:2019-06-29

本文共 1330 字,大约阅读时间需要 4 分钟。

插入排序的主要思想是每次取一个列表元素与列表中已经排序好的列表段进行比较,然后插入从而得到新的排序好的列表段,最终获得排序好的列表。

比如,待排序列表为[49,38,65,97,76,13,27,49],则比较的步骤和得到的新列表如下:

(带有背景颜色的列表段是已经排序好的,红色背景标记的是执行插入并且进行过交换的元素)

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

待排序:     [49,38,65,97,76,13,27,49]

第一次比较后:  [38,49,65,97,76,13,27,49]     第二个元素(38)与之前的元素进行比较,发现38较小,进行交换

第二次比较后:  [38,49,65,97,76,13,27,49]   第三个元素(65)大于前一个元素(49),所以不进行交换操作,直接到下一个元素比较

第三次比较后:  [38,49,65,97,76,13,27,49]   和第二次比较类似

第四次比较后:  [38,49,65,76,97,13,27,49]   当前元素(76)比前一元素(97)小,(97)后移,(76)继续与(65)比较,发现当前元素比较大,执行插入

第五次比较后:  [13,38,49,65,76,97,27,49]  

第六次比较后:  [13,27,38,49,65,76,97,49]

第七次比较后:  [13,27,38,49,49,65,76,97] 

从百度百科上盗了一张图:

 

Python实现代码如下:

1 # Coded by Alvin 2  3  4 def InsertSort(myList): 5     #获取列表长度 6     length = len(myList) 7  8     for i in range(1,length): 9         #设置当前值前一个元素的标识10         j = i - 111         12         #如果当前值小于前一个元素,则将当前值作为一个临时变量存储,将前一个元素后移一位13         if(myList[i] < myList[j]):14             temp = myList[i]15             myList[i] = myList[j]16             17             #继续往前寻找,如果有比临时变量大的数字,则后移一位,直到找到比临时变量小的元素或者达到列表第一个元素18             j = j-119             while j>=0 and myList[j] > temp:20                 myList[j+1] = myList[j]21                 j = j-122 23             #将临时变量赋值给合适位置24             myList[j+1] = temp25 26 27 myList = [49,38,65,97,76,13,27,49]28 InsertSort(myList)29 print(myList)

运行结果:

转载地址:http://flbzm.baihongyu.com/

你可能感兴趣的文章
多态基类的析构函数应该为虚函数
查看>>
js在IE和Firefox兼容性
查看>>
Oracle内部错误:ORA-00600[OSDEP_INTERNAL]一例
查看>>
电影'社交网络'获金球奖最佳影片,最佳编剧,最佳导演,最佳配乐奖
查看>>
了解AMDU工具生成的MAP文件
查看>>
photoshop切图
查看>>
mysql 游标使用
查看>>
关于SQL SERVER中T-SQL语句的变量
查看>>
gperf的使用
查看>>
[Javascript权威指南笔记01]后自增/后自减运算符的副作用 和 运算符的结合性
查看>>
JBoss Portlet Bridge 3.2.0.Final 发布
查看>>
最火的Android开源项目(2)
查看>>
学习java中的几个Map-我们到底能走多远系列(27)
查看>>
【Android】编译CM10遇到的错误解决方案
查看>>
为了挺医生一把! 转抄自QQ群
查看>>
Fedora17下配置nfs
查看>>
我本将心向明月,奈何明月照沟渠_百度百科
查看>>
DataGridView “Insert into 语句的语法错误”的解决方法
查看>>
17个常见Python运行时错误[转]
查看>>
Windows 系统提示“内存不足”的原因及解决方法
查看>>