#include<iostream>
#include <type_traits>
#include <vector>
#include <algorithm>
using namespace std;
void getMixHeap(vector<int>& nums, int n, int i) {
int f = i;
int l = 2*i + 1;
int r = 2*i + 2;
if(l < n && nums[l] > nums[f]) {
f = l;
}
if(r < n && nums[r] > nums[f]) {
f = r;
}
if(i != f) {
swap(nums[f], nums[i]);
getMixHeap(nums, n, f);
}
}
void heapSort(vector<int>& nums) {
int n = nums.size();
for(int i = n - 1; i >= 0; i--) {
getMixHeap(nums, n, i);
}
for(int i = n - 1; i >= 0; i--) {
swap(nums[i], nums[0]);
getMixHeap(nums, i, 0);
}
}
void printV(vector<int>& nums) {
for(int num : nums) {
cout << num << " ";
}
}
int main() {
vector<int> nums = {1, 5, 6, 9, 23, 45, 1, 7, 7};
heapSort(nums);
printV(nums);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步