#include<iostream>#include<vector>usingnamespace std;// 调整堆,确保以i根节点的子树满足大根堆voidheapify(vector<int>& vec,int n ,int i){int largest = i;int left =2* i +1;int right =2* i +2;if(left < n && vec[left]> vec[largetst]){largest = left;}if(right < n && vec[right]> vec[largetst]){largest = right;}if(largetst != i){swap(vec[largest], vec[i]);heapify(vec, n, largest);}}voidsort(vector<int>& vec){int n = vec.size();for(int i=(n-1)/2; i>=0;--i){heapify(vec, n, i);}for(int i=n-1; i>=0;--i){swap(vec[0], vec[i]);heapify(vec, i,0);}}intmain(){vector<int> vec ={4,5,6,7,1,9,0};sort(vec);for(auto v: vec){cout<<v<<" ";}}