论坛首页 综合技术论坛

jaskell/haskelll/python/java/c 中的quicksort

浏览 12921 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-12-13  
Suninny 写道
举QSort这个例子显然不够有说服力。
看看这个用Ruby作的,可与Haskell的版本相媲美:
 def qsort(list)
   return [] if (x,*xs=*list).empty?
   less, more = xs.partition{|y| y < x}
   qsort(less) + [x] + qsort(more)
 end

Block比List Comprehensions好用多了。



我個人比較不認同.
List Comprehensions
[ y |  y <- xs, y < x ]
非常近似數學的
{ y | ∀y ∈ xs, y < x }
幾乎是一目了然.

用 partition, you have to know the input parameter ( a block return true/false )
and what returns.

In Haskell, of course, you could also use partition without using List Comprehension.
(And for me, it seems the Haskell's partition is more "clear" than Ruby's)


import List

qsort [] = []
qsort (x:xs) = qsort less ++ [x] ++ qsort more
  where (less, more) = partition (<x) xs


0 请登录后投票
   发表时间:2006-12-13  
我觉得这个比较不能说明太多问题.
使用语言内建的某些特性来对比起在一个算法实现上面的简易完全没有可比性,如果去对比性能才有些意义.
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics