#include <bits/stdc++.h>
using namespace std;
void vunDong(int x[], int k, int n) {
if (k <= n/2-1) {
int j = 2 * k + 1;
if (j < n-1 && x[j] < x[j+1])
j = j + 1;
if (x[k] < x[j]) {
int tg = x[k];
x[k] = x[j];
x[j] = tg;
vunDong(x,j,n);
}
}
}
void taoDongDauTien(int x[], int n)
{
for (int k=n/2-1; k>=0; k--)
vunDong(x, k, n);
}
void heapSort(int x[], int n)
{
taoDongDauTien(x,n);
for (int i=n; i>=2; i--)
{
int tg = x[0];
x[0] = x[i-1];
x[i-1] = tg;
vunDong(x, 0, i-1);
}
}
void createNumber(int A[], int n)
{
srand((int)time(0));
for (int i = 0; i < n; ++i)
{
A[i] = -10000 + rand() %(10000- (-10000) + 1);
}
}
void show(int A[], int n)
{
for (int i = 0; i < n; ++i)
{
cout<<A[i]<<" ";
}
}
int main(int argc, char const *argv[])
{
int n = 20;
int *A = new int[n];
createNumber(A,n);
show(A,n);
cout<<endl;
heapSort(A,n);
show(A,n);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgdnVuRG9uZyhpbnQgeFtdLCBpbnQgaywgaW50IG4pIHsKCWlmIChrIDw9IG4vMi0xKSB7CgkJaW50IGogPSAyICogayArIDE7CgkJaWYgKGogPCBuLTEgJiYgeFtqXSA8IHhbaisxXSkKCQkJaiA9IGogKyAxOwoJCWlmICh4W2tdIDwgeFtqXSkgewoJCQlpbnQgdGcgPSB4W2tdOwoJCQl4W2tdID0geFtqXTsKCQkJeFtqXSA9IHRnOwoJCQl2dW5Eb25nKHgsaixuKTsKCQl9Cgl9Cn0Kdm9pZCB0YW9Eb25nRGF1VGllbihpbnQgeFtdLCBpbnQgbikKewoJZm9yIChpbnQgaz1uLzItMTsgaz49MDsgay0tKQoJCXZ1bkRvbmcoeCwgaywgbik7Cn0Kdm9pZCBoZWFwU29ydChpbnQgeFtdLCBpbnQgbikKewoJdGFvRG9uZ0RhdVRpZW4oeCxuKTsKCWZvciAoaW50IGk9bjsgaT49MjsgaS0tKQoJewoJCWludCB0ZyA9IHhbMF07CgkJeFswXSA9IHhbaS0xXTsKCQl4W2ktMV0gPSB0ZzsKCQl2dW5Eb25nKHgsIDAsIGktMSk7Cgl9Cn0Kdm9pZCBjcmVhdGVOdW1iZXIoaW50IEFbXSwgaW50IG4pCnsKCXNyYW5kKChpbnQpdGltZSgwKSk7Cglmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKCXsKCQlBW2ldID0gLTEwMDAwICsgcmFuZCgpICUoMTAwMDAtICgtMTAwMDApICsgMSk7Cgl9Cn0Kdm9pZCBzaG93KGludCBBW10sIGludCBuKQp7Cglmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKCXsKCQljb3V0PDxBW2ldPDwiICI7Cgl9Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSkKewoJaW50IG4gPSAyMDsKCWludCAqQSA9IG5ldyBpbnRbbl07CgljcmVhdGVOdW1iZXIoQSxuKTsKCXNob3coQSxuKTsKCWNvdXQ8PGVuZGw7CgloZWFwU29ydChBLG4pOwoJc2hvdyhBLG4pOwoJcmV0dXJuIDA7Cn0=