Skip to content

07.12.2011

Быстрая сортировка

Долго мучил я быстрою сортировку, и домучил все-таки.

Итак код:

class Program
    {
        static int PartSort(int[] x, int min, int max) //частичная сортировка
        {
            int m = min;
            int vybor = x[min]; min++;
            while (true)
            {
                while (min < x.Length && x[min] < vybor) min++; // а вот условие "x[min] < vybor && min < x.Length" не прокатит
                while (x[max] > vybor) max--;                   
                if (min <= max)
                {
                    int temp = x[min];
                    x[min] = x[max];
                    x[max] = temp;
                }
                else break;
            }
            x[m] = x[max];
            x[max] = vybor;
            return max;
        }
        static void QuickSort(int[] x, int min, int max) 
        {
            if (min < max)
            {
                int b = PartSort(x, min, max);
                QuickSort(x, min, b - 1);
                QuickSort(x, b+1, x.Length - 1);
            }
        }
        static void Main(string[] args)
        {
            int[] x = { 50, 70, 60, 40, 10, 80, 20 };
            QuickSort(x, 0, x.Length-1);
        }

А вот «слиянием» не поддается пока…

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments