Информация об изменениях

Сообщение Re: quicksort или не quicksort от 29.10.2015 6:58

Изменено 29.10.2015 7:05 Буравчик

Здравствуйте, Basil B, Вы писали:

BB>Предлагаю обменяться мнениями по поводу того, имеет ли право этот "знаменитый двустрочник" на хаскеле называться quicksort-ом, и почему:

BB>
BB>qsort [] = []
BB>qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x]
BB>

BB>Там, где я его увидел, он это название носит.

Наврядли удастся это сделать, пока не будет обозначено четкое определение quicksort

А вообще,
1. Pivot выбран, список разделен относительно pivot, рекурсия для каждого куска
2. Сложность O(N*logN)

В общем ДА, это quicksort

Есть конечно нюансы, но это вопрос реализации:
1. Для "настоящего" quicksort не нужна дополнительная память (in-place сортировка), но в Haskell такое понятие вообще не имеет смысла.
2. В haskell-версии эта сортировка является еще и устойчивой (stable), в отличии от "оригинала",
Одновременно эти два условия и не соблюсти — stable in-place за O(N*logN) пока не придумали
Re: quicksort или не quicksort
Здравствуйте, Basil B, Вы писали:

BB>Предлагаю обменяться мнениями по поводу того, имеет ли право этот "знаменитый двустрочник" на хаскеле называться quicksort-ом, и почему:

BB>
BB>qsort [] = []
BB>qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x]
BB>

BB>Там, где я его увидел, он это название носит.

Наврядли удастся это сделать, пока не будет обозначено четкое определение quicksort

А вообще,
1. Pivot выбран, список разделен относительно pivot, рекурсия для каждого куска
2. Сложность O(N*logN)

В общем ДА, это quicksort

Есть конечно нюансы, но это вопрос реализации:
1. Для "настоящего" quicksort не нужна дополнительная память (in-place сортировка), но в Haskell такое понятие вообще не имеет смысла.
2. В haskell-версии эта сортировка является еще и устойчивой (stable), в отличии от "оригинала",
Одновременно эти два условия и не соблюсти — stable in-place за O(N*logN) пока не придумали

И не забываем, что в Haskell сортируется список, т.е. структура с последовательным доступом (в отличии от массива)