Pabon_SEC

Heap Sort

May 17th, 2016
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. /***
  2.  
  3. Bismillahir Rahmanir Rahim
  4.  _______
  5. |   __  \           _____
  6. |  |__|  )_______   |   /     ____    ______
  7. |   ____/ \__    \  |  |__   /    \  |      \
  8. |  (        / __  \ |  __ \ /  __  \ |   /\  \
  9. |  |       (____  / |     / \      / |__/  \  )
  10. |__|            \/  |____/   \____/         \/
  11.  
  12. ***/
  13.  
  14. #include<bits/stdc++.h>
  15.  
  16. using namespace std;
  17.  
  18. int arr[100];
  19.  
  20. void MakeHeap(int i, int n)
  21. {
  22.     int j, temp;
  23.  
  24.     temp = arr[i];
  25.  
  26.     j = 2*i;
  27.  
  28.     while (j <= n)
  29.     {
  30.         if (j < n && arr[j+1] > arr[j])
  31.         {
  32.             j++;
  33.         }
  34.  
  35.         if (temp > arr[j])
  36.             break;
  37.  
  38.         else if (temp <= arr[j])
  39.         {
  40.             arr[j/2] = arr[j];
  41.  
  42.             j = 2*j;
  43.         }
  44.     }
  45.  
  46.     arr[j/2] = temp;
  47. }
  48.  
  49. void HeapSort(int n)
  50. {
  51.     int i, temp;
  52.  
  53.     for (i = n; i >= 2; i--)
  54.     {
  55.         temp = arr[i];
  56.  
  57.         arr[i] = arr[1];
  58.  
  59.         arr[1] = temp;
  60.  
  61.         MakeHeap(1, i - 1);
  62.     }
  63. }
  64.  
  65. void Build_MaxHeap(int n)
  66. {
  67.     int i;
  68.  
  69.     for(i = n/2; i >= 1; i--)
  70.     {
  71.         MakeHeap(i, n);
  72.     }
  73. }
  74.  
  75. int main()
  76. {
  77.     int n, i;
  78.  
  79.     printf("Enter the number of elements to sort : ");
  80.  
  81.     scanf("%d",&n);
  82.  
  83.     printf("\n\nElements are : ");
  84.  
  85.     for (i = 1; i <= n; i++)
  86.     {
  87.         scanf("%d",&arr[i]);
  88.     }
  89.  
  90.     Build_MaxHeap(n);
  91.  
  92.     HeapSort(n);
  93.  
  94.     printf("\n\t------- Sorted elements -------\n\n");
  95.  
  96.     for(i=1; i<=n; i++)
  97.     {
  98.         printf("%d ",arr[i]);
  99.     }
  100.  
  101.     printf("\n");
  102.  
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment