说得快速排序,基本是常用的排序当中速度最快的排序了,之前也用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]"