Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void downHeap(int a[], int k, int n) {
- int new_elem;
- int child;
- new_elem = a[k];
- while(k <= n/2) {
- child = 2*k;
- if( child < n && a[child] < a[child+1] )
- child++;
- if( new_elem >= a[child] ) break;
- a[k] = a[child];
- k = child;
- }
- a[k] = new_elem;
- }
- void heapSort(int a[], int size) {
- int i;
- int temp;
- for(i=size/2-1; i >= 0; i--) downHeap(a, i, size-1);
- for(i=size-1; i > 0; i--) {
- temp=a[i]; a[i]=a[0]; a[0]=temp;
- downHeap(a, 0, i-1);
- }
- }
- int main() {
- FILE *fin,*fout;
- fin = fopen("sort.in","r");
- fout = fopen("sort.out","w");
- int n;
- fscanf(fin,"%d", &n);
- int A[n];
- for (int i = 0; i<n; i++) {
- fscanf(fin,"%d", &A[i]);
- }
- heapSort(A, n);
- for (int i = 0; i<n; i++) {
- fprintf(fout,"%d ", A[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement