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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cell_KEY/article/details/60954775

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--;
        }
}

猜你喜欢

转载自blog.csdn.net/Cell_KEY/article/details/60954775
今日推荐