arr = [43,1,67,44,23,89,7,65,43,12,45,77,43,12,67,9,55,11]
def insert_sort(arr,gap = 1): # 插入排序实现
n = len(arr)
for i in range(gap,n):
j = i
while j-gap >= 0 and arr[j-gap] > arr[j]: # 交换元素
arr[j-gap],arr[j] = arr[j],arr[j-gap]
j -= gap
def xier_sort(arr): # 希尔排序
n = len(arr)
gap = n // 2
while gap > 0: # gap依次递减
insert_sort(arr,gap)
gap = gap // 2
xier_sort(arr)
print(arr)
输出:
[1, 7, 9, 11, 12, 12, 23, 43, 43, 43, 44, 45, 55, 65, 67, 67, 77, 89]