Haskell:写一个漂亮的归并排序

本文通过实现归并排序算法,展示了Haskell语言的简洁与强大。利用函数式编程特性,我们逐步优化了排序过程,体现了Haskell编程的魅力。

Haskell:写一个漂亮的归并排序

引言

依然是Haskell写漂亮系列,这次通过实现一个归并排序程序并改进,来体现函数式编程的魔力及编程技巧。

mergeSort :: Ord a => [a] -> [a]
mergeSort [] = []
mergeSort [x] = [x]
mergeSort xs = merge (mergeSort l) (mergeSort r)
  where (l, r) = splitAt (length xs `div` 2) xs


merge :: Ord a => [a] -> [a] -> [a] 
merge [] xs = xs
merge xs [] = xs
merge (x:xs) (y:ys) 
  | x < y = x : merge xs (y:ys)
  | otherwise = y : merge (x:xs) ys
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值