1.插入排序
插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌
–来自百度百科
把一个数组分为两个部分,排序部分,未部分排序。从位排序部分抽取一个值赋值给KEY(位排序部分减一),与已排序部分最后一个值比较,换位;倒数第二个值比较,换位。。。直到换到合适的位置(已排序值加一)
代码实现
def insert_sort(lists):
# 插入排序
count = len(lists)
for i in range(1, count):
key = lists[i] #数组的值依次赋值给key
j = i - 1 #可以检索到有序部分最后一个值
while j >= 0:
if lists[j] > key:
lists[j + 1] = lists[j]
lists[j] = key
j -= 1
return lists
如数组 5364179
第一层循环,假定5是有序部分,3是无序部分抽出来的值
3和5比较,换位——>35 64179
第二层循环,假定35是有序部分,6是无序部分抽出来的值
6和5比较,不换位——>356 4179
5和3比较,不换位——>356 4179
第三层循环…3456 179
…13456 79
…134567 9
…1345679
最后,生成升序数组输出
(非作者允许,严禁转载)
作者联系方式: