Re[2]: quicksort или не quicksort
От: Буравчик Россия  
Дата: 29.10.15 08:16
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Помимо того что это не inplace (который был существенной частью оригинальной статьи), и как отметил Александреску тут совсем другой partition, тут ещё не используется приём дающий гарантию на логарифмичестий размер стека worst case, описанный в той же самой оригинальной статье шестидесятых годов.


qsort [] = []
qsort xs = qsort (filter (< pivot) xs) ++ qsort (filter (>= pivot) xs)
  where pivot = xs !! (length xs `div` 2)


Это устраняет проблему выбора первого элемента — как и в оригинале теперь выбирается средний элемент. Сложность алгоритма остается та же O(N*logN)
Правда теряется устойчивость сортировки (хотя это можно исправить)


P.S. Насчет in-place согласен
Best regards, Буравчик
Отредактировано 29.10.2015 8:17 Буравчик . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.