Advertisement
Guest User

Sydney sucks

a guest
Nov 25th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. template< class T, int MAX_SIZE >
  2. void PQueue< T, MAX_SIZE>::moveDown( int i ){
  3.     if( _size == 0 || _size == 1 )
  4.         return;
  5.     int leftChild = 2*i;
  6.     int rightChild = 2*i+1;
  7.    
  8.     if( rightChild > _size )
  9.         rightChild = _size;
  10.     if( leftChild > _size )
  11.         leftChild = _size;
  12.    
  13.     while( i <= _size / 2 && (_array[i] > _array[leftChild]
  14.                               || _array[i] > _array[rightChild] ) ){
  15.         if (  _array[leftChild] >= _array[rightChild] ) {
  16.             T tmp = _array[i];
  17.             _array[i] = _array[rightChild];
  18.             _array[rightChild]  = tmp;
  19.             i = rightChild;
  20.             leftChild = 2 * i;
  21.             rightChild = 2 * i + 1;
  22.         }
  23.         else if (  _array[rightChild] >= _array[leftChild] ) {
  24.             T tmp = _array[i];
  25.             _array[i] = _array[leftChild];
  26.             _array[leftChild]  = tmp;
  27.             i = leftChild;
  28.             leftChild = 2 * i;
  29.             rightChild = 2 * i + 1;
  30.         }
  31.     }
  32.    
  33. }
  34.  
  35. template< class T, int MAX_SIZE >
  36. void PQueue< T, MAX_SIZE>::moveUp( ){
  37.     if( _size == 0 || _size == 1 )
  38.         return;
  39.     int parent;
  40.     int i = _size;
  41.    
  42.     if ( _size == 2 )
  43.         parent = 1;
  44.     else
  45.         parent = (i) / 2;
  46.     while ( i > 1 && _array[i] < _array[parent] ) {
  47.         if ( _array[i] < _array[parent] ) {
  48.             T tmp = _array[i];
  49.             _array[i] = _array[parent];
  50.             _array[parent]  = tmp;
  51.             i = parent;
  52.             parent = (i) / 2;
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement