Advertisement
Guest User

Untitled

a guest
May 28th, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1.  
  2. fromList :: Ord a => Int -> [a] -> Treap a
  3. fromList seed xs = foldl insert (empty seed) xs
  4.  
  5.  
  6. empty :: Int -> Treap a
  7. empty seed = Treap (R.mkStdGen seed) Leaf
  8.  
  9.  
  10. height :: Treap a -> Int
  11. height = height' . extractBranch
  12. where
  13. height' Leaf = 0
  14. height' (Branch left x y right) = 1 + max (height' left) (height' right)
  15.  
  16.  
  17. buildTreeAndGetData :: [Int] -> R.StdGen -> (Int, Int)
  18. buildTreeAndGetData arr rng = (h, c)
  19. where
  20. (seed, rng') = R.next rng
  21. tr = fromList seed arr
  22. h = height tr
  23. c = member tr $ (fst $ R.next rng) `mod` 1000
  24.  
  25.  
  26. printData :: [Int] -> IO()
  27. printData arr = do
  28. rng <- R.newStdGen
  29. let d@(h, c) = buildTreeAndGetData arr rng
  30. print d
  31.  
  32.  
  33. runBenchmark :: Int -> IO()
  34. runBenchmark nodeCount = do
  35. printData [1..nodeCount]
  36.  
  37.  
  38. main = mapM_ runBenchmark [1000, 2000..10000]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement