Mar. 28th, 2008

yorool_gui: (Default)
qsort, qsort... Какой-такой qsort... Сортировка пузырьком - наше все:

IMHO получилось не сложнее, чем на C каком-нибудь:
import Data.Array
import System.Random

bubbleSort :: Ord e => Array Int e -> Array Int e
bubbleSort a = let (o,size) = bounds a
                   swap a n | (a!n) > (a!(n+1)) = a // [(n,a!(n+1)),(n+1,a!n)]
                   swap a n = a
                   pass a n = foldl swap a [ o .. n ]
               in  foldl pass a $ reverse [ o .. size-1 ]

main = do s <- sequence $ take 10 $ repeat $ randomRIO (0::Int,100)
          let a = listArray (0,length(s)-1) s
              a' = bubbleSort a
          sequence $ map (putStrLn.show) (elems a')

Profile

yorool_gui: (Default)
Michael Ilyin

April 2017

S M T W T F S
      1
2 345678
910 1112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 9th, 2025 05:55 pm
Powered by Dreamwidth Studios