#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
void HeapAdjust(std::vector<int> &a,int i,int size){
int left = 2*i + 1;
int right = 2*i + 2;
int max = i;
if(i < size/2){
if(left < size && a[max] < a[left]) max = left;
if(right < size && a[max] < a[right]) max = right;
if(max != i){
swap(a[max],a[i]);
HeapAdjust(a,max,size);
}
}
}
void BuildHeap(std::vector<int> &a){
for (int i = a.size()/2-1; i >= 0; --i)
{
HeapAdjust(a,i,a.size());
}
}
void HeapSort(std::vector<int> &a){
BuildHeap(a);
int i = a.size()/2 + 1;
int j = a.size();
while(i--){
swap(a[0],a[j-1]);
HeapAdjust(a,0,j-1);
--j;
}
cout<<a[j]<<endl;
}
int main(int argc, char const *argv[])
{
std::vector<int> a;
int num;
cin>>num;
for (int i = 0; i < num; ++i)
{
int value;
cin>>value;
a.push_back(value);
}
HeapSort(a);
return 0;
}
poj 2388中位数
最新推荐文章于 2022-10-23 08:20:57 发布