C++博客 :: 首页 ::  :: 联系 ::  :: 管理

Sort algorithm in Haskell

Posted on 2006-08-18 22:20 chenger 阅读(889) 评论(2)  编辑 收藏 引用 所属分类: Programming Stuff
现在每天抽一个小时看看Haskell作为调节。有个哥们将考试推到明年六月了。据说今天考的都是超高频题(样本数量为3,太少……)。我那不坚定的决心在动摇。用福克纳的话:“他们在苦熬”。这叫装逼。

用Haskell写了两个排序算法,快速排序和合并排序。都很短,没几行程序,虽然效率肯定是不敢恭维的,但能用来满足我们那自欺欺人的美感,言简意赅不是很高的境界么?不管是写文章还是写程序都差不多。但同时要清楚,要可读性。说了这么多还是看看成果吧:

module Sort where

-- Quick Sort Algorithm

quicksort [] = []
quicksort (x
:xs) = quicksort [y | y <- xs,y <= x]
++ [x] ++ quicksort [y | y <- xs,y > x]

-- Merge two ordered sequences
merge' [] [] = []
merge' lst []
= lst
merge' [] lst
= lst
merge' (x1
:xs1) (x2:xs2) =
if
x1 < x2
then x1:(merge' xs1 (x2:xs2))
else x2:(merge' (x1:xs1) xs2)

-- Merge Sort Algorithm
mergesort [] = []
mergesort (x
:[]) = [x]
mergesort lst
=
let
parts = splitAt (div (length lst) 2) lst
in merge' (mergesort (fst parts))
(mergesort (snd parts))



其实只利用了递归和Haskell强大的列表处理功能。这也不是Haskell的专利,我相信Python或Ruby或Lisp也完全能做到。

Feedback

# re: Sort algorithm in Haskell  回复  更多评论   

2006-08-20 20:03 by 3×7=51
呵呵,这里好象是C++博客的样子。

# re: Sort algorithm in Haskell  回复  更多评论   

2006-08-20 21:59 by chenger
恩,应该放到其他技术区里面。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理