本文借鉴于lsgo实验室创始人马老师
希尔插入排序
算法:
程序:
def ShellInsertSort(nums):
"""希尔插入排序"""
delta = len(nums) //2
while delta >0:
shell(delta,nums)
delta = delta//2
return nums
def shell(delta, key):
for i in range(delta,len(key)):
j = i - delta
current = key[i]
while j >= 0 and key[j] >current:
key[j+delta] = key[j]
j = j - delta
key[j+delta] = current
直接插入排序
程序
def StraightInsertSort(nums):
"""直接插入排序"""
for i in range(1,len(nums)):
j = i -1
current = nums[j]
while j >= 0 and nums[j] > current:
nums[j+1] = nums[j]
j = j -1
nums[j+1] = current
return nums
稳定排序
如果碰见一个元素和插入元素相等,那么算法将程序放在相等元素的后面;