Haskell優雅的快排實現


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM