refactor quicksort example

This commit is contained in:
Folkert 2021-05-08 23:18:59 +02:00
parent a99ba56eba
commit 4e57b3b0d7

View File

@ -4,9 +4,11 @@ app "quicksort"
provides [ quicksort ] to base
quicksort = \originalList ->
n = List.len originalList
quicksortHelp originalList 0 (n - 1)
quicksortHelp : List (Num a), Nat, Nat -> List (Num a)
quicksortHelp = \list, low, high ->
quicksortHelp : List (Num a), Nat, Nat -> List (Num a)
quicksortHelp = \list, low, high ->
if low < high then
when partition low high list is
Pair partitionIndex partitioned ->
@ -17,8 +19,8 @@ quicksort = \originalList ->
list
partition : Nat, Nat, List (Num a) -> [ Pair Nat (List (Num a)) ]
partition = \low, high, initialList ->
partition : Nat, Nat, List (Num a) -> [ Pair Nat (List (Num a)) ]
partition = \low, high, initialList ->
when List.get initialList high is
Ok pivot ->
when partitionHelp (low - 1) low initialList high pivot is
@ -28,8 +30,8 @@ quicksort = \originalList ->
Err _ ->
Pair (low - 1) initialList
partitionHelp : Nat, Nat, List (Num c), Nat, (Num c) -> [ Pair Nat (List (Num c)) ]
partitionHelp = \i, j, list, high, pivot ->
partitionHelp : Nat, Nat, List (Num c), Nat, (Num c) -> [ Pair Nat (List (Num c)) ]
partitionHelp = \i, j, list, high, pivot ->
if j < high then
when List.get list j is
Ok value ->
@ -44,8 +46,8 @@ quicksort = \originalList ->
Pair i list
swap : Nat, Nat, List a -> List a
swap = \i, j, list ->
swap : Nat, Nat, List a -> List a
swap = \i, j, list ->
when Pair (List.get list i) (List.get list j) is
Pair (Ok atI) (Ok atJ) ->
list
@ -55,5 +57,3 @@ quicksort = \originalList ->
_ ->
[]
n = List.len originalList
quicksortHelp originalList 0 (n - 1)