CC++ & Algorithm
算法可视化
排序复杂度 O(n log n)支持自定义输入

堆排序:大根堆

先把数组建成大根堆(堆顶最大),再把堆顶和末尾交换(最大值就位),缩小堆后重新调整,重复直到排完。

复杂度 O(n log n)
main.cpp第 1 行
1// 堆排序: 建大根堆, 堆顶与末尾交换, 缩小堆再调整
2for (int i = n/2-1; i >= 0; i--) heapify(i, n); // 建堆
3for (int i = n-1; i > 0; i--) {
4 swap(a[0], a[i]); // 堆顶(最大)放末尾
5 heapify(0, i); // 调整剩余堆
6}
变量表0 个变量
还没有变量,执行到声明语句后出现
数组 a
比较交换已就位
4
0
10
1
3
2
5
3
1
4
1/14

数组 [4, 10, 3, 5, 1],先建成大根堆(每个节点都比孩子大)

自定义数据
限制:最多 20 个 · 整数 · 范围 0-999
1 / 14