1.直接插入排序:将需要排序的列表分为已排序和未排序部分,依次将未排序部分的数字与已排序部分进行比较,找到比自己小的数字时停止,并插入到该数字后一位
def insertSort(L):
lenth = len(L)
for i in range(1, lenth):
if L[i] < L[i-1]:
j = i-1
tmp = L.pop(i)
while tmp < L[j]:
j = j-1
L.insert(j+1, tmp)
return L
2.希尔排序:
第一次排序:gap = 5(10/2),相距5的数字为一组,一共分为五组,分别进行插入排序
第二次排序:gap = 2(5/2),相距为2的数字为一组,一共分为2组,分别进行插入排序
第三次排序:gap = 1(2/1),只有一组,进行插入排序后,得到最后答案
def shellSort(L):
lenth = len(L)
gap = lenth/2
while gap >= 1:
for i in range(gap, lenth):
while i >= gap and L[i-gap] > L[i]:
L[i], L[i-gap] = L[i-gap], L[i]
i = i-gap
gap = gap/2
return L