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 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)
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