Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template< class T, int MAX_SIZE >
- void PQueue< T, MAX_SIZE>::moveDown( int i ){
- if( _size == 0 || _size == 1 )
- return;
- int leftChild = 2*i;
- int rightChild = 2*i+1;
- if( rightChild > _size )
- rightChild = _size;
- if( leftChild > _size )
- leftChild = _size;
- while( i <= _size / 2 && (_array[i] > _array[leftChild]
- || _array[i] > _array[rightChild] ) ){
- if ( _array[leftChild] >= _array[rightChild] ) {
- T tmp = _array[i];
- _array[i] = _array[rightChild];
- _array[rightChild] = tmp;
- i = rightChild;
- leftChild = 2 * i;
- rightChild = 2 * i + 1;
- }
- else if ( _array[rightChild] >= _array[leftChild] ) {
- T tmp = _array[i];
- _array[i] = _array[leftChild];
- _array[leftChild] = tmp;
- i = leftChild;
- leftChild = 2 * i;
- rightChild = 2 * i + 1;
- }
- }
- }
- template< class T, int MAX_SIZE >
- void PQueue< T, MAX_SIZE>::moveUp( ){
- if( _size == 0 || _size == 1 )
- return;
- int parent;
- int i = _size;
- if ( _size == 2 )
- parent = 1;
- else
- parent = (i) / 2;
- while ( i > 1 && _array[i] < _array[parent] ) {
- if ( _array[i] < _array[parent] ) {
- T tmp = _array[i];
- _array[i] = _array[parent];
- _array[parent] = tmp;
- i = parent;
- parent = (i) / 2;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement