Рекурсивная сортировка элементов массива

Код рекурсивной сортировки элементов массива представлен ниже:
// фукнция сортировки
void
QuickSort(double* array, int a, int b)
{
   
int A = a;
   
int B = b;
   
double mid;

   
if ( b > a)
   {

       
// Находим разделительный элемент в середине массива
               mid = array[ ( a + b ) / 2 ];

       
// Обходим массив
      
while( A <= B )
       {
            
/* Находим элемент, который больше или равен
            * разделительному элементу от левого индекса.
            */

                       while( ( A < b ) && ( array[A] < mid )) ++A;

           
/* Находим элемент, который меньше или равен
            * разделительному элементу от правого индекса.

            */

                       while( ( B > a ) && ( array[B] > mid )) --B;

           
// Если индексы не пересекаются, меняем
           
if( A <= B )
           {
               
double T;
               
T = array[A];
               
array[A] = array[B];
               
array[B] = T;

               ++
A;
               --
B;
           }
       }

       
/* Если правый индекс не достиг левой границы массива,
        * нужно повторить сортировку левой части.
        */

       if( a < B ) QuickSort( array, a, B );

       /* Если левый индекс не достиг правой границы массива,
        * нужно повторить сортировку правой части.
        */

       if( A < b ) QuickSort( array, A, b );

   }
}

void QuickSort(double* array, int n)
{
       
QuickSort(array, 0, n-1);
}
 
« Предыдущая статья   Следующая статья »