Advertisement
Butol

Untitled

Mar 31st, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. void Heap::siftDown(int index) {
  2.     int left = 2 * index + 1;
  3.     int right = 2 * index + 2;
  4.     int largest = index;
  5.     if( left < length && buffer[left] > buffer[index])
  6.         largest = left;
  7.     if( right < length && buffer[right] > buffer[index])
  8.         largest = right;
  9.     if(largest != index ) {
  10.         std::swap(buffer[index], buffer[largest]);
  11.         siftDown( largest );
  12.     }
  13. }
  14.  
  15. void Heap::siftUp( int index ) {
  16.     while( index > 0 ) {
  17.         int parent = ( index - 1 ) / 2;
  18.         if(buffer[index] <= buffer[parent])
  19.             return;
  20.         std::swap(buffer[index], buffer[parent] );
  21.         index = parent;
  22.     }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement