4
我运行下面的快速排序的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的列表并不是那么大,所以:
- 我怎么能处理数据十亿的数据?这是一个在Haskell语言中的问题
- 我怎么能预测一个算法的运行时间使用其复杂性?
第一个元素是一个可怕的枢轴选择。此外,你的重复处理是完全错误的;枢轴的任何副本都进入“较小”和“较大”! – user2357112
快速排序就地!这不是快速排序。 – dotctor
如果不是唯一值,则还需要确保输出中出现* all *个*符号。 – chepner