Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void PriorityQueue::percolateDown( unsigned short hole )
- {
- unsigned short start, child;
- HeapVertex tmp = array[ hole ];
- for ( ; (hole * 4 - 2) <= currentSize; hole = child ) {
- start = child = hole * 4 - 2;
- if (child != currentSize && array[child + 1].distance < array[child].distance )
- child++;
- if (start + 1 < currentSize && array[start + 2].distance < array[child].distance )
- child = start + 2;
- if (start + 2 < currentSize && array[start + 3].distance < array[child].distance)
- child = start + 3;
- if (child != hole && array[child].distance < tmp.distance)
- array[ hole ] = array[ child ];
- else
- break;
- }
- array[ hole ] = tmp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement