Haskell优雅的快排实现

时间:2021-03-13 08:52:34

  说得快速排序,基本是常用的排序当中速度最快的排序了,之前也用C和Java实现过,但是过程十分痛苦,更重要的是写完代码只记得过程却对实质的过程觉得隔了一层纱,有种说不出的感觉。刚刚看一下Haskell实现的快排,顿时感觉惊为天人,他喵的,这才是人应该写的代码,简单而又优雅,真是太棒了

 

1 quickSort :: (Ord a)=>[a]->[a]
2 quickSort [] =[]
3 quickSort (x:xs)=
4     let smaller=[a|a<-xs,a<=x]
5         bigger=[a|a<-xs,a>x]
6     in quickSort smaller ++[x]++quickSort bigger

 

测试代码:

1 main :: IO ()
2 main = 
3     print( show (quickSort(take 100 (cycle [3,2,1]))))

输出:

"[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]"