aboutsummaryrefslogtreecommitdiff
path: root/comparison/Haskell/bsort-40000.hs
blob: 401ceaf1cc174f6190ee3c95ae864596c20cb69a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{-
https://gist.github.com/masquerade0324/68f4f3fd3ab897fbe1ad 
http://files.farka.eu/pub/AC21007/lec5.pdf
-}

import System.Random

bs xs 0 = xs
bs (x:y:ys) n =
  if x<y then x:(bs (y:ys) (n-1))
  else y:(bs (x:ys) (n-1))
bs xs n = xs


go xs 0 = xs
go xs n = go (bs xs n) (n-1)

bsort xs = go xs (length xs -1)

{-
main = print $ bsort [3,2,8,5]
-}


randomList :: Int -> IO([Int])
randomList 0 = return []
randomList n = do
  r  <- randomRIO (1,10000)
  rs <- randomList (n-1)
  return (r:rs)


main = do
  list <- randomList 40000
  let sorted = bsort list
  print (take 10 sorted)