Advertisement
Guest User

Untitled

a guest
Apr 7th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. let rec insert (e : int) (l : int list) =
  2. match l with
  3. | [] -> [e]
  4. | hd :: tl ->
  5. if e <= hd then
  6. e :: hd :: tl
  7. else
  8. hd :: insert e tl
  9. let rec sort l =
  10. match l with
  11. | [] -> []
  12. | hd :: tl -> insert hd (sort tl)
  13.  
  14. (* running trace on insert and sort in the toplevel
  15. * give us a good illustration of how these functions
  16. * work
  17. utop # sort;;
  18. - : int list -> int list = <fun>
  19.  
  20. utop # sort [3;6;1;19;15];;
  21. sort <-- [3; 6; 1; 19; 15]
  22. sort <-- [6; 1; 19; 15]
  23. sort <-- [1; 19; 15]
  24. sort <-- [19; 15]
  25. sort <-- [15]
  26. sort <-- []
  27. sort --> []
  28. insert <-- 15
  29. insert --> <fun>
  30. insert* <-- []
  31. insert* --> [15]
  32. sort --> [15]
  33. insert <-- 19
  34. insert --> <fun>
  35. insert* <-- [15]
  36. insert <-- 19
  37. insert --> <fun>
  38. insert* <-- []
  39. insert* --> [19]
  40. insert* --> [15; 19]
  41. sort --> [15; 19]
  42. insert <-- 1
  43. insert --> <fun>
  44. insert* <-- [15; 19]
  45. insert* --> [1; 15; 19]
  46. sort --> [1; 15; 19]
  47. insert <-- 6
  48. insert --> <fun>
  49. insert* <-- [1; 15; 19]
  50. insert <-- 6
  51. insert --> <fun>
  52. insert* <-- [15; 19]
  53. insert* --> [6; 15; 19]
  54. insert* --> [1; 6; 15; 19]
  55. sort --> [1; 6; 15; 19]
  56. insert <-- 3
  57. insert --> <fun>
  58. insert* <-- [1; 6; 15; 19]
  59. insert <-- 3
  60. insert --> <fun>
  61. insert* <-- [6; 15; 19]
  62. insert* --> [3; 6; 15; 19]
  63. insert* --> [1; 3; 6; 15; 19]
  64. sort --> [1; 3; 6; 15; 19]
  65. - : int list = [1; 3; 6; 15; 19]
  66. *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement