Skip to content
Snippets Groups Projects
Commit da036965 authored by Taddeus Kroes's avatar Taddeus Kroes
Browse files

Some whitespace fixes.

parent c6d73775
No related branches found
No related tags found
No related merge requests found
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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment