Size: a a a

Elm Lang сообщество разработчиков

2021 January 04

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
И никакое in-place тут ни при чём. Просто есть конкретный алгоритм "quicksort" и вы либо реализуете его, либо это будет другой алгоритм
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Как это не причём? In-place это требование по памяти и очень важное
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
В хаскеле будет одна копия и та — ленивая ;) И take 3 (sort l) вполне себе разумный минимум элементов насортирует, чтобы получить три наименьших
Какой там алгоритм под капотом?
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Denis Krivosheev
Как это не причём? In-place это требование по памяти и очень важное
Есть алгоритм X работающий in-place, есть алгоритм Y, работающий в отдельной памяти, вы выбмраете под ваши требования тот или другой
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Что ещё за "требования по памяти и очень важные"
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
У разных алгоритмов разные свойства. Но не "разные у одного"
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
У кого-то требования по памяти, у других — по процессору, у третьих — возможность "делить и властвовать"
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Denis Krivosheev
Какой там алгоритм под капотом?
Точно не помню, merge sort вроде в каком-то виде
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Потому что хорошо подходит для ленивости
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
(а не потому что там требования какие-то)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Точно не помню, merge sort вроде в каком-то виде
Но мерджсорт не даст «приемлемое количество сравнений» в ленивом виде
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Может какая-то модификация квикселекта
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
"Функциональный мерджморт" :)
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Берём первый, остальные делим на "больше первого" и "меньше первого", сортируем половины рекурсивно, сливаем
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Да но по сути нам надо получить первые n
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
То есть какая-то модификация порядковой статистики
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Ну так и будут отсортированы только левые половины и те не до конца
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Фильтры-то тоже ленивые :)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Интересная штука
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Взяли голову, получили два стрима меньших и больших. Стрим меньших можно обрабатывать дальше. Берём голову, получаем два подстрима
источник