def Heapify(li, i, size):
left = 2*i+1
right = 2*i+2
maxi = i
if left < size and li[left] > li[maxi]:
maxi = left
if right < size and li[right] > li[maxi]:
maxi = right
if maxi == i:
return
if maxi != i:
Switch(li, maxi, i)
Heapify(li, maxi, size)
return li
def Switch(li, a, b):
temp = li[a]
li[a] = li[b]
li[b] = temp
def PrintArr(li):
for i in li:
print(i,end = " ")
def BuildHeap(li):
last = len(li)-1
last_parent = (last-1)//2
cur = last_parent
while cur >= 0:
Heapify(li,cur, len(li))
cur -=1
return li
def HeapSort(li):
li = BuildHeap(li)
#PrintArr(li)
i = len(li)-1
x = 1
while i> 0:
Switch(li, 0, i)
#PrintArr(li)
Heapify(li, 0, i)
#print("第",x,"次:")
#PrintArr(li)
#print("end")
i -= 1
x += 1
return li
li = [23,34,12,33,10,22,9,5]
PrintArr(HeapSort(li))
Código de implementación de ordenación del montón de Python
Supongo que te gusta
Origin blog.csdn.net/KathyLJQ/article/details/107150949
Recomendado
Clasificación