Commit da036965 authored by Taddeus Kroes's avatar Taddeus Kroes

Some whitespace fixes.

parent c6d73775
open List
(* Sort a list l using the quicksort algorithm *)
let rec quickSort (l : int list) =
match l with
([] | [_]) -> l
let rec quickSort (l : int list) = match l with
| [] | [_] -> l
| pivot::rest ->
let cmp x = x < pivot in
let low, high = partition cmp rest in
let low, high = partition (fun x -> x < pivot) rest in
quickSort low @ pivot :: quickSort high
(* Sort a list l using the merge sort algorithm *)
let rec mergeSort (l : int list) =
match l with
let rec mergeSort (l : int list) = match l with
(* If the list is of length 0 or 1, then it is already sorted *)
([] | [_]) -> l
| [] | [_] -> l
| _ ->
let rec merge a b =
match a with
let rec merge a b = match a with
[] -> b
| ha::ta -> match b with
[] -> a
| hb::tb -> if ha < hb then ha::(merge ta b)
else hb::(merge a tb)
in
let rec split left right =
in let rec split left right =
if (length left) - (length right) <= 1 then
(* List lengths differ at most 1 element, split is complete *)
(left, right)
......@@ -32,6 +27,5 @@ let rec mergeSort (l : int list) =
[] -> (left, right)
(* Put one element of left into right list *)
| h::t -> split t (h::right)
in
let left, right = split l [] in
merge (mergeSort left) (mergeSort right)
in let left, right = split l []
in 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