描述
给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中堆排序算法进行排序,并输出排序最后结果的相应序列。
输入
共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)
输出
一行,输出排序结果。
样例输入
7
48 36 68 72 12 48 2
样例输出
2 12 36 48 48 68 72
#include#define N 100000using namespace std;void swap(int &x,int &y){ int z; z=x; x=y; y=z;}void adjustdown(int a[],int r,int j){ int child=2*r+1; int temp=a[r]; while(child<=j) { if((child =a[child]) break; a[(child-1)/2]=a[child]; child=2*child+1; } a[(child-1)/2]=temp;}void heapsort(int a[],int n){ for(int i=(n-2)/2;i>-1;i--) adjustdown(a,i,n-1); for(int ii=n-1;ii>0;ii--) { swap(a[0],a[ii]); adjustdown(a,0,ii-1); }}int main(){ int n; int a[N]={0}; cin>>n; for(int k=0;k >a[k]; heapsort(a,n); for(int kk=0;kk