排序算法 Python,快速排序 python3
插入排序算法的动态图如下:
插入算法思想
插入算法类似于打扑克时的排序方法。具体思路如下:
1.先按顺序取第一个号,再取第二个号。然后,观察如果第一个数字小于第二个数字,则第二个数字无效。如果第二个数字小于第一个数字,则将第一个数字移动到第二个位置,并将原来的第二个数字移动到第一个位置。
2.这时,第一个和第二个数字是按顺序排列的,取第三个数字,然后依次将第三个数字和第二个第一个数字进行比较,插入到合适的位置。
3.这时候前三个数按顺序,取第四个数,然后把第四个数和前三个数依次比较,插入到合适的位置。
…
循环完成后,所有有序代码如下:最坏情况
def insert_sort(数据):
计数=0
对于范围内的I(1,len(datas)):
temp=datas[i]
对于范围(I,0,-1)中的j:
如果温度数据[j-1]:
数据[j],数据[j-1]=数据[j-1],数据[j]
计数=1
否则:
如果j!=我:
数据[j]=温度
计数=1
破裂
在第{i}轮插入和排序:,数据后打印(f 个结果)
打印(在{count}次交换或赋值操作后f )
返回数据
if __name__==__main__ :
数据=[10,9,8,7,6,5,4,3,2,1,0]
datas=insert_sort(datas)的执行结果如下:
第一轮插入排序后的结果:[9,10,8,7,6,5,4,3,2,1,0]
第二轮插入排序后的结果:[8,9,10,7,6,5,4,3,2,1,0]
第三轮插入排序后的结果:[7,8,9,10,6,5,4,3,2,1,0]
第4轮插入排序后的结果:[6,7,8,9,10,5,4,3,2,1,0]
第五轮插入排序后的结果:[5,6,7,8,9,10,4,3,2,1,0]
第6轮插入排序后的结果:[4,5,6,7,8,9,10,3,2,1,0]
第7轮插入排序后的结果:[3,4,5,6,7,8,9,10,2,1,0]
第8轮插入排序后的结果:[2,3,4,5,6,7,8,9,10,1,0]
第9轮插入排序后的结果:[1,2,3,4,5,6,7,8,9,10,0]
第10轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
在总共55个最佳案例之后:
def insert_sort(数据):
计数=0
对于范围内的I(1,len(datas)):
temp=datas[i]
对于范围(I,0,-1)中的j:
如果温度数据[j-1]:
数据[j],数据[j-1]=数据[j-1],数据[j]
计数=1
否则:
如果j!=我:
数据[j]=温度
计数=1
破裂
在第{i}轮插入和排序:,数据后打印(f 个结果)
打印(在{count}次交换或赋值操作后f )
返回数据
if __name__==__main__ :
数据=[0,1,2,3,4,5,6,7,8,9,10]
datas=insert_sort(datas)的执行结果如下:可以发现,已经排序了,速度会很快。
第一轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第二轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第三轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第四轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第五轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第6轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第7轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第8轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第9轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第10轮插入排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
总计0
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。