八大排序python实现

时间:2022-12-23 09:05:34

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.希尔排序:

八大排序python实现

第一次排序: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