参考:www.bilibili.com/video/BV1E4…
python实现
def heapSort(arr):
lastIndex = len(arr) // 2 - 1
for i in range(lastIndex, -1, -1):
adjustHeap(arr, i, len(arr))
for j in range(len(arr) - 1, 0, -1):
arr[0], arr[j] = arr[j], arr[0]
adjustHeap(arr, 0, j)
def adjustHeap(arr, index, length):
"""
:param arr: 列表
:param index: 开始的索引
:param length: 列表的长度
:return:
"""
temp = arr[index]
k = 2 * index + 1
while k < length:
if k + 1 < length and arr[k] < arr[k + 1]:
k += 1
if arr[k] > temp:
arr[index] = arr[k]
index = k
else:
break
k = k * 2 + 1
arr[index] = temp
l = [4, 9, 8, 5, 6, 11]
heapSort(l)
print(l)