中文wiki上的版本:
def insertion_sort(n):
if len(n) == 1:
return n
b = insertion_sort(n[1:])
m = len(b)
for i in range(m):
if n[0] <= b[i]:
return b[:i]+[n[0]]+b[i:]
return b + [n[0]]
使用分片看得有点头疼
再来看看《Data Structures and Algorithms in Python》的版本
def insertion sort(A):
”””Sort list of comparable elements into nondecreasing order.”””
for k in range(1, len(A)): # from 1 to n-1
cur = A[k] # current element to be inserted
j = k # find correct index j for current
while j > 0 and A[j−1] > cur: # element A[j-1] must be after current
A[j] = A[j−1]
j −= 1
A[j] = cur # cur is now in the right place
这个还比较清楚些,书的这段代码后还有一个图,比较不错
参考:
http://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F