Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Heap::siftDown(int index) {
- int left = 2 * index + 1;
- int right = 2 * index + 2;
- int largest = index;
- if( left < length && buffer[left] > buffer[index])
- largest = left;
- if( right < length && buffer[right] > buffer[index])
- largest = right;
- if(largest != index ) {
- std::swap(buffer[index], buffer[largest]);
- siftDown( largest );
- }
- }
- void Heap::siftUp( int index ) {
- while( index > 0 ) {
- int parent = ( index - 1 ) / 2;
- if(buffer[index] <= buffer[parent])
- return;
- std::swap(buffer[index], buffer[parent] );
- index = parent;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement