排序之-------堆排

    xiaoxiao2021-03-25  114

    void adjustdown( int a [], int root , int size ) {          int left = root * 2 + 1;          int right = left + 1;          int key = left;          while (left< size )         {                 if (right< size && a [left]< a [right])                {                        key = right;                }                 if ( a [key]> a [ root ])                {                        swap( a [ root ], a [key]);                         root = key;                        left = root * 2 + 1;                        right = left + 1;                        key = left;                }                 else                {                         break ;                }         } } void Heapsort( int a [], int size ) {          int begin = size / 2 - 1;          for (; begin>=0; begin--)         {                adjustdown( a , begin, size );         }          int end = size - 1;          while (end)         {                swap( a [0], a [end]);                adjustdown( a , 0, end);                end--;         } }
    转载请注明原文地址: https://ju.6miu.com/read-8649.html

    最新回复(0)