Guest User

Untitled

a guest
Jan 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. (* CS 362, Lab 2 *)
  2. (* Author: Gabriel Anderson *)
  3.  
  4.  
  5. fun last (x::[]) = x
  6. | last (x::xs) = last xs
  7.  
  8.  
  9. fun middle lst =
  10. let
  11. fun middle' (x::_) [] = x
  12. | middle' (x::_) (_::[]) = x
  13. | middle' (_::xs) (_::_::ys) = middle' xs ys
  14. in
  15. middle' lst lst
  16. end
  17.  
  18.  
  19. fun median(a,b,c) =
  20. let
  21. val M = Int.max(a, Int.max(b, c))
  22. val m = Int.min(a, Int.min(b, c))
  23. in
  24. (a + b + c) - M - m
  25. end
  26.  
  27.  
  28. fun partition (lst, p) =
  29. let
  30. fun go (a, (xs, ys)) =
  31. if a <= p then
  32. (a::xs, ys)
  33. else
  34. (xs, a::ys)
  35. in
  36. foldr go ([],[]) lst
  37. end
  38.  
  39.  
  40. fun quicksort [] = []
  41. | quicksort [x] = [x]
  42. | quicksort (p::lst) =
  43. let
  44. val (xs, ys) = partition (lst, p)
  45. in
  46. quicksort xs @ (p :: quicksort ys)
  47. end
Add Comment
Please, Sign In to add comment