я бег ниже быстрая сортировка функции Haskell (с помощью слияния и сортировки алгоритма):haskell быстрая сортировка сортировки?
qsort []=[]
qsort (x:xs) =
qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs , a<x ] -- edit
larger = [b | b <- xs , b>=x ]
Для проверки выполнения этого в течение битового большого количества данных, я запускаю код ниже:
qsort [100000,99999..0]
До сих пор 40 минут, и он все еще работает! Даже список из 100 000 не так велик, поэтому:
- Как я могу обрабатывать данные в миллиард данных?
- это алгоритм сортировки (слияние и сортировка) занимает меньше времени на другом языке, таком как C#, python ... это проблема в языке haskell
- Как я мог предсказать время выполнения алгоритма с использованием его сложности?
Первый элемент - ужасный выбор стержня. Кроме того, ваша дублирующаяся обработка абсолютно неверна; любые дубликаты стержня попадают в «меньшие» и «большие»! – user2357112
Быстрая сортировка на месте! Это не быстрый вид. – dotctor
Вам также необходимо убедиться, что * все * вхождения 'x' появляются в выводе, если это не уникальное значение. – chepner