Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3.  
  4. void downHeap(int a[], int k, int n) {
  5. int new_elem;
  6. int child;
  7. new_elem = a[k];
  8.  
  9. while(k <= n/2) {
  10. child = 2*k;
  11. if( child < n && a[child] < a[child+1] )
  12. child++;
  13. if( new_elem >= a[child] ) break;
  14. a[k] = a[child];
  15. k = child;
  16. }
  17. a[k] = new_elem;
  18. }
  19.  
  20. void heapSort(int a[], int size) {
  21. int i;
  22. int temp;
  23.  
  24.  
  25. for(i=size/2-1; i >= 0; i--) downHeap(a, i, size-1);
  26.  
  27.  
  28. for(i=size-1; i > 0; i--) {
  29. temp=a[i]; a[i]=a[0]; a[0]=temp;
  30.  
  31. downHeap(a, 0, i-1);
  32. }
  33. }
  34. int main() {
  35. FILE *fin,*fout;
  36. fin = fopen("sort.in","r");
  37. fout = fopen("sort.out","w");
  38. int n;
  39. fscanf(fin,"%d", &n);
  40. int A[n];
  41. for (int i = 0; i<n; i++) {
  42. fscanf(fin,"%d", &A[i]);
  43. }
  44. heapSort(A, n);
  45. for (int i = 0; i<n; i++) {
  46. fprintf(fout,"%d ", A[i]);
  47. }
  48.  
  49.  
  50.  
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement