Heap Sort
#include<iostream> using namespace std; const int MAX = 1001; int l[MAX]; //Heap Sort void HeapAdjust(int s, int m) { int rc = l[s]; for(int j=2*s;j<=m;j*=2) { if(j<m && l[j]<l[j+1]) ++j; if(rc>=l[j]) break; l[s]=l[j]; s=j; } l[s]=rc; } void HeapSort(int n) { for(int i=n/2;i>0;--i) HeapAdjust(i, n); for(int i=n;i>1;--i) { int temp = l[1]; l[1]=l[i]; l[i]=temp; HeapAdjust(1, i-1); } } int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>l[i]; HeapSort(n); for(int i=1;i<=n;i++) cout<<l[i]<<" "; cout<<endl; return 0; }