//堆排序 #include <iostream> using namespace std; int arr[100010]; int n,sz; void down(int u) { int t = u; if (u * 2 <= sz && arr[u * 2] < arr[t]) t = u * 2; if (u * 2 + 1 <= sz && arr[u * 2 + 1] < arr[t]) t = u * 2 + 1; if (u != t) { swap(arr[u], arr[t]); down(t); } } int main() { printf("你想输入多少个数字:"); scanf("%d", &n); sz = n; for (int i = 1; i <= n; i++) scanf("%d", &arr[i]); for (int i = n / 2; i; i--) down(i); while (sz) { printf("%d ", arr[1]); arr[1] = arr[sz--]; down(1); } return 0; }
1

相关推荐

不愿透露姓名的神秘牛友
12-03 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
12-01 12:34
已编辑
广东工业大学 Java
如题,fw🐭🐭,加上准备的太晚,大三上已找不到日常实习,导致连锁反应,下学期的暑期实习找不到好的实习,导致秋招找不到中大厂,现在是中小厂Java还有考公的选择,由于有些中小厂工作强度比肩大厂,钱还少,感觉不如考公如果🐮u们是我现在这种情况,会怎么选?
负债的混子:关注你一段时间了,突然发现你头像名字都改了,想必是这段时间压力很大。关于就业还是考公的选择,就像很多牛友说的:不要美化自己没走过的路。你现在想往互联网发展,发现这条路很难走,然后想往考公发展,但是你没走过考公这条路,所以你不知道这条路的压力如何。你今年大三了,还有时间给你做选择,我希望你能够尽快的决定自己的方向,然后一条路走到黑,而不是在这里徘徊,每个人的道路是不一样的,你无法复刻别人的路,你能做的就是尽力的完善自己。 最后,我想说的是,加油,陌生人!
点赞 评论 收藏
分享
牛客网
牛客企业服务