个人觉得 Haskell 里面的 qsort 算法表述很有震撼力

25 views
Skip to first unread message

Reader Silent

unread,
Jan 11, 2007, 6:46:12 PM1/11/07
to haskell.cn
个人觉得 Haskell 里面的的 qsort 算法表述很有震撼力,

qsort :: Ord a => [a]->[a]
qsort [] = []
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs, a <= x]
larger = [b | b <- xs, b > x]

这个例子只要了解该算法, 即使不懂 Haskell 也能看懂...呃...猜懂 :-D

wenshe...@gmail.com

unread,
Jan 12, 2007, 12:00:56 PM1/12/07
to haskell.cn
Hello, 你好,glad someone came along.

from: http://www.haskell.org/haskellwiki/Introduction

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x)
xs)

type declaration is not need for such small program.

Reader Silent

unread,
Jan 12, 2007, 12:35:30 PM1/12/07
to hask...@googlegroups.com
这个写法我知道, 我之所以觉得前一种写法更"可取"是因为我觉得这种
写法对于不懂 Haskell 的人来说更直观. 反正我是一看到这段代码就知道
它跟什么了 :-) 所以才说是很有震撼力

另外, 我觉得
qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <-xs, y >= x]

这种写法比使用 fliter 更直观些. 当然就不知道其效率上有没有什么差别

Reply all
Reply to author
Forward
0 new messages