建立大根堆
1、建堆:(农村包围城市,建堆完成之后堆顶的数最大)
2、挨个出数
def sift(li, low, high):
i = low
j = 2*i+1
temp = li[low]
while j<=high:
if j+1 <= high and li[j+1] > li[j]:
j = j+1
if li[j]>temp:
li[i] = li[j]
i = j
j = 2*i+1
else:
li[i] = temp
break
else:
li[i] = temp
def heap_sort(li):
n = len(li)
for i in range((n-2)//2, -1, -1):
sift(li, i, n-1)
for i in range(n-1, -1, -1):
li[0], li[i] = li[i], li[0]
sift(li, 0, i-1)
a = [5,6,8,3,5,9,1,45]
heap_sort(a)
print(a)
文章提供了一段Python代码,用于建立大根堆并执行堆排序。首先,通过sift函数进行调整以保证堆的性质,然后在heap_sort函数中遍历数组,用堆排序方法对列表进行排序。最后,用一个具体的例子展示了如何对包含整数的列表进行堆排序操作。
1336

被折叠的 条评论
为什么被折叠?



