堆排序原理比较复杂。其利用完全二叉树原理,步骤如下:
1.对列表建立堆的形状;
2.从根节点逐个开始取数。
具体原理讲不清楚,推荐去B站。
但对于Python ,可直接调用内置模块heapq包,里面有函数可直接实现堆排序。
import heapq #引入heapq包
n=int(input())#输入列表长度
l=list(map(int,input().split()))
heapq.heapify(l)#建堆
for i in range(n):
a=heapq.heappop(l)##逐渐弹出最小的数
print(a,end=' ')