#include<iostream>
#include<algorithm>
using namespace std;
void heap(int arr[],int i,int n){
int min=i;
int left=2*i+1;
int right=2*i+2;
if(arr[min]>arr[left]&&left<n)min=left;
if(arr[min]>arr[right]&&right<n)min=right;
if(min!=i){
swap(arr[min],arr[i]);
heap(arr,min,n);
}
}
int main()
{
int n;
cin>>n;
int arr[n-1];
for(int i=0;i<n;i++)cin>>arr[i];
for(int i=n/2-1;i>=0;i--)heap(arr,i,n);//建堆也是排序第一步
// for(int i=n-1;i>=0;i--){
// swap(arr[0],arr[i]);
// heap(arr,0,i);
// }
for(int i=0;i<n;i++)cout<<arr[i]<<' ';
return 0;
}
07-12
328
07-13
455
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交