当前位置:网站首页>堆排序实现代码
堆排序实现代码
2022-08-08 19:00:00 【就一枚小白】
降序
构建最小堆
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int arr[N];
void adjust(int a[], int n, int i){
int mi = i, l = i * 2 + 1, r = i * 2 + 2;
if(l < n && a[mi] > a[l]) mi = l;
if(r < n && a[mi] > a[r]) mi = r;
if(mi != i){
swap(a[mi], a[i]);
adjust(a, n, mi);
}
}
void buildMinHeap(int a[], int n){
for(int i = n / 2 - 1; i >= 0; i--){
adjust(a, n, i);
}
for(int i = n - 1; i >= 0; i--){
swap(a[0], a[i]);
adjust(a, i, 0);
}
}
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++) cin >> arr[i];
buildMinHeap(arr, n);
return 0;
}
升序
构建最大堆
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int arr[N];
void adjust(int a[], int n, int i){
int ma = i, l = i * 2 + 1, r = i * 2 + 2;
if(l < n && a[ma] < a[l]) ma = l;
if(r < n && a[ma] < a[r]) ma = r;
if(ma != i){
swap(a[ma], a[i]);
adjust(a, n, ma);
}
}
void buildMinHeap(int a[], int n){
for(int i = n / 2 - 1; i >= 0; i--){
adjust(a, n, i);
}
for(int i = n - 1; i >= 0; i--){
swap(a[0], a[i]);
adjust(a, i, 0);
}
}
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++) cin >> arr[i];
buildMinHeap(arr, n);
return 0;
}
边栏推荐
- 3D游戏建模教程:游戏角色制作——赏金猎人,超逼真
- 期货开户哪家公司好,要正规安全的
- MogDB study notes - starting from 0
- Laravel queue consumption instance and timed task add task consumption
- [极客大挑战 2019]BuyFlag&&[HCTF 2018]admin
- Open Office XML 格式中的 Style 设计原理
- Michael Bronstein 系列长文:迈向几何深度学习(之三)——第一个几何神经网络模型
- We want to replace the RDS database and upgrade from sqlserver 2016 web to 2017 enterprise cluster version, with expert consultation
- 计算机网络面试常问知识
- Shell编程之循环语句与函数
猜你喜欢
随机推荐
用工具实现 Mock API 的整个流程
干货技巧|如何用3DsMax制作笔记本电脑
golang for循环详解
JDBC最详讲解(快速入门)
传音控股:目前公司手机产品暂无明确计划进入中国市场
uniapp parent component uses prop to pass asynchronous data to child components
hdu2647 N!Again
16. Learn Lua file I/O together
请问shake数据库中mongoshake同步过程中,src_mongo挂了,同步服务不会退出吗?
Open Office XML 格式中的 Style 设计原理
SSM项目整合——综合案例
[ZJCTF 2019]NiZhuanSiWei
几何g6将搭载harmonyos系统,产品竞争力全面升级
n个数取出r个数排列
ptorch
Azure Neural TTS continues to be updated to help enterprises develop small language markets
数组!!!
APICloud AVM 封装日期和时间选择组件
The difference between Redis' memory elimination strategy and expired deletion strategy
hdu1042 N! (large number)








