Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318353
  • 博文数量: 48
  • 博客积分: 4510
  • 博客等级: 中校
  • 技术积分: 556
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:19
文章分类

全部博文(48)

文章存档

2012年(1)

2011年(9)

2010年(1)

2009年(12)

2008年(25)

分类:

2008-09-21 01:38:40

一些经典算法的 Haskell 实现

1. Sieve of Eratosthenes

算法描述见 

Haskell 实现

-- Sieve.hs

sieve :: [Integer] -> [Integer]
sieve (x:xs) = x : sieve xs'
             where xs'
= filter (\y -> y `mod` x /= 0) xs

primes = 2 : sieve [3,5..]



加了平方优化后的版本

isPrime :: Integer -> [Integer] -> Bool
isPrime p (x:xs)
    | x*> p = True
    | p `mod` x == 0 = False
    | otherwise = isPrime p xs

primes = 2 : [ p | p <- [3,5..], isPrime p primes ]



2. Quick Sort

算法描述见 

Haskell 实现

-- Qsort.hs
qsort :: Ord a => [a] -> [a]
qsort [] = []
qsort (x:xs) = qsort (filter (<= x) xs) ++ [x] ++ qsort (filter (> x) xs)


未完待续!
阅读(1502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~