堆排序 – 算法板子

#include<bits/stdc++.h> using namespace std; const int N = 100010; int h[N], m, n, Size; void down(int u) {     int t = u;     if (u * 2 <= Size && h[t] > h[u * 2]) t = u * 2;     if (u * 2 + 1 <= Size && h[t] > h[u * 2 + 1]) t = u * 2 + 1;     if (t != u) {         swap(h[t], h[u]);         down(t);     } } int main() {     scanf("%d%d", &n, &m);     Size = n;     for (int i = 1; i <= n; ++i) scanf("%d", &h[i]);     for (int i = n / 2; i; --i) down(i);     while (m--) {         cout << h[1] << " ";         h[1] = h[Size--];         down(1);     }     return 0; }

堆排序 – 算法板子leetcode刷题题解部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 堆排序 – 算法板子leetcode刷题题解