Advertisement
Nuparu00

heap peap

Nov 15th, 2021
866
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.84 KB | None | 0 0
  1. int getParent(int i){
  2.     return (i-1)/2;
  3. }
  4.  
  5. int getLeft(int i){
  6.     return 2*i+1;
  7. }
  8.  
  9. int getRight(int i){
  10.     return 2*i+2;
  11. }
  12.  
  13. void heapify (int arr[], int size, int i){
  14.     int left = getLeft(i);
  15.     int right = getRight(i);
  16.  
  17.     int largest = i;
  18.  
  19.     if (left < size && arr[left] > arr[i]){
  20.         largest = left;
  21.     }
  22.     else{
  23.         largest = i;
  24.     }
  25.  
  26.     if(right < size && arr[right] > arr[largest]){
  27.         largest = right;
  28.     }
  29.  
  30.     if(largest != i){
  31.         swap(arr,i,largest);
  32.         heapify(arr,size,largest);
  33.     }
  34. }
  35.  
  36. void buildMaxHeap(int arr[], int size){
  37.     for(int i = size/2 -1; i >= 0; i--){
  38.         heapify(arr,size,i);
  39.     }
  40. }
  41.  
  42. void heapSort(int arr[], int n){
  43.  
  44.     buildMaxHeap(arr,n);
  45.     for(int i = n - 1; i > 0; i--){
  46.         swap(arr,0,i);
  47.         heapify(arr,i,0);
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement