Быстрая сортировка: рефакторинг

Опубликовано Mar 2, 2012 в Рефакторинг и оптимизация | 2 коммент.

, , , , ,

Быстрая сортировка: рефакторинг

Имеется написанный на C# метод, реализующий алгоритм быстрой сортировки.

 

 

Реализация

    static void QSort(List input)
        {
            int hand = input[0];
            List less = new List();
            List eq = new List();
            List large = new List();
 
            for (int i = 0; i < input.Count; i++)
            {
                if (input[i] > hand) large.Add(input[i]);
                else
                {
                    if (input[i] == hand) eq.Add(input[i]);
                    else less.Add(input[i]);
                }
            }
            if (less.Count > 1) QSort(less);
            if (large.Count > 1) QSort(large);
 
            input.Clear();
            input.AddRange(less);
            input.AddRange(eq);
            input.AddRange(large);
        }

Вопросы

    Как бы Вы “переводили” реализацию этого метода на C++?
    Какие недостатки, на Ваш взгляд, имеются в данной реализации?
    Предложите модификацию метода, которая устранит выявленные недостатки.

Автор публикации: