#include "stdafx.h"
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 50
#include<math.h>
void Sift(int a[], int low, int high) {
int i = low, j = 2 * i;
int temp = a[i];
while (j <= high) {
if (j<high&&a[j]<a[j + 1 ]) {
++j;
}
if (temp<a[j]) {
a[i] = a[j];
i = j;
j = 2 * i;
}
else break ;
}
a[i] = temp;
}
void heapSort(int a[], int n, int pre_n) {
int i;
int temp;
for (i = n / 2 ; i >= 1 ; --i) {
Sift(a, i, n);
}
for (i = n; i >= n - pre_n; --i) {
temp = a[1 ];
a[1 ] = a[i];
a[i] = temp;
Sift(a, 1 , i - 1 );
}
}
void ArrayGeneration(int array [], int size) {
srand((unsigned )time(NULL));
int i;
array [0 ] = 0 ;
for (i = 1 ; i<size; ++i) {
array [i] = rand();
}
for (i = 0 ; i<size; ++i) {
printf ("%d " , array [i]);
}
printf ("\n" );
}
int main(int argc, char ** argv) {
printf ("input pre_n:\n" );
int b[MAX + 1 ], n, i;
scanf_s("%d" , &n);
ArrayGeneration(b, MAX + 1 );
heapSort(b, MAX, n);
for (i = MAX; i >= MAX - n; --i) {
printf ("%d " , b[i]);
}
return 0 ;
}