-
插入排序是一个对少量元素排序的有效算法。插入排序的工作原理与打牌时整理手中牌时的做法差不多。开始摸牌时,左手是空的,牌堆的牌面朝下放在桌子上,右手从桌子上摸起一张牌,并将它插入到左手牌中的正确位置。要将它与左手中已有的每一张牌从右到左地进行比较。无论在什么时候,左手中的牌都是排好序的,而这些牌原先都是桌上那副牌里最顶上的牌。
-
伪代码描述
INSERTION-SORT(A)
for j <- 2 to length(A)
do key <- A[j]
i <- j-1
while i>0 and A[i]>key
do A[i+1] <- A[i]
i <- i-1
A[i+1] <- key
- python实现(insertion_sort.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def insertion_sort(A):
for j in range(1, len(A)):
key = A[j]
i = j-1
while i>=0 and A[i]>key:
A[i+1] = A[i]
i = i-1
A[i+1] = key
if __name__ == '__main__':
A = [5, 3, 4, 6, 1, 2]
insertion_sort(A)
print(A)
- 测试
$ python3 insertion_sort.py
[1, 2, 3, 4, 5, 6]
- 参考
《算法导论》 第二版 2.1插入排序