# coding:utf8
####归并排序
def merge(l, i, m, j):
k1 = i
k2 = m + 1
tmp = []
while k1 <= m and k2 <= j:
if l[k1] < l[k2]:
tmp.append(l[k1])
k1 = k1 + 1
else:
tmp.append(l[k2])
k2 = k2 + 1
while k1 <= m:
tmp.append(l[k1])
k1 = k1 + 1
while k2 <= j:
tmp.append(l[k2])
k2 = k2 + 1
for n in range(i, j + 1):
l[n] = tmp[n - i]
def mergesort(l, i, j):
if i == j:
return
m = (i + j) / 2
mergesort(l, i, m)
mergesort(l, m + 1, j)
merge(l, i, m, j)
if __name__ == '__main__':
l = [32, 43, 23, 42, 34, 23, 64]
mergesort(l, 0, len(l) - 1)
print l
结果
C:\Python27\python.exe C:/Users/Administrator/Desktop/python_project/shellSort.py
[1, 2, 3, 3, 4, 6, 7, 8, 9]