Commit da036965 authored by Taddeus Kroes's avatar Taddeus Kroes

Some whitespace fixes.

parent c6d73775
open List open List
(* Sort a list l using the quicksort algorithm *) (* Sort a list l using the quicksort algorithm *)
let rec quickSort (l : int list) = let rec quickSort (l : int list) = match l with
match l with | [] | [_] -> l
([] | [_]) -> l
| pivot::rest -> | pivot::rest ->
let cmp x = x < pivot in let low, high = partition (fun x -> x < pivot) rest in
let low, high = partition cmp rest in
quickSort low @ pivot :: quickSort high quickSort low @ pivot :: quickSort high
(* Sort a list l using the merge sort algorithm *) (* Sort a list l using the merge sort algorithm *)
let rec mergeSort (l : int list) = let rec mergeSort (l : int list) = match l with
match l with
(* If the list is of length 0 or 1, then it is already sorted *) (* If the list is of length 0 or 1, then it is already sorted *)
([] | [_]) -> l | [] | [_] -> l
| _ -> | _ ->
let rec merge a b = let rec merge a b = match a with
match a with
[] -> b [] -> b
| ha::ta -> match b with | ha::ta -> match b with
[] -> a [] -> a
| hb::tb -> if ha < hb then ha::(merge ta b) | hb::tb -> if ha < hb then ha::(merge ta b)
else hb::(merge a tb) else hb::(merge a tb)
in in let rec split left right =
let rec split left right =
if (length left) - (length right) <= 1 then if (length left) - (length right) <= 1 then
(* List lengths differ at most 1 element, split is complete *) (* List lengths differ at most 1 element, split is complete *)
(left, right) (left, right)
...@@ -32,6 +27,5 @@ let rec mergeSort (l : int list) = ...@@ -32,6 +27,5 @@ let rec mergeSort (l : int list) =
[] -> (left, right) [] -> (left, right)
(* Put one element of left into right list *) (* Put one element of left into right list *)
| h::t -> split t (h::right) | h::t -> split t (h::right)
in in let left, right = split l []
let left, right = split l [] in in merge (mergeSort left) (mergeSort right)
merge (mergeSort left) (mergeSort right)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment