C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Рекурсивная сортировка эллементов массива / FAQs / Visual C++

Сортировка эллементов массива
A: (Leprecon)
Оригинальная ссылка: нету

Рекурсивная сортировка
void QuickSort(double* array, int a, int b)
{
    int A = a;
    int B = b;
    double mid;

    if ( b > a)
    {

        /* Arbitrarily establishing partition element as the midpoint of
         * the array.
         */
                mid = array[ ( a + b ) / 2 ];

        // loop through the array until indices cross
        while( A <= B )
        {
             /* find the first element that is greater than or equal to
             * the partition element starting from the left Index.
             */
                        while( ( A < b ) && ( array[A] < mid )) ++A;

            /* find an element that is smaller than or equal to
             * the partition element starting from the right Index.
             */
                        while( ( B > a ) && ( array[B] > mid )) --B;

            // if the indexes have not crossed, swap
            if( A <= B )
            {
                double T;
                T = array[A];
                array[A] = array[B];
                array[B] = T;

                ++A;
                --B;
            }
        }

        /* If the right index has not reached the left side of array
         * must now sort the left partition.
         */
        if( a < B ) QuickSort( array, a, B );

         /* If the left index has not reached the right side of array
          * must now sort the right partition.
          */
        if( A < b ) QuickSort( array, A, b );

    }
}

void QuickSort(double* array, int n)
{
        QuickSort(array, 0, n-1);
}