ocaml: phase 5.1 count_inversions.ml baseline (12 inversions via merge sort)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Modified merge sort that counts inversions during the merge step:
when an element from the right half is selected, the remaining
elements of the left half (mid - i + 1) all form inversions with
that right element.
count_inv [|8; 4; 2; 1; 3; 5; 7; 6|] = 12
Inversions of [8;4;2;1;3;5;7;6]:
with 8: (8,4)(8,2)(8,1)(8,3)(8,5)(8,7)(8,6) = 7
with 4: (4,2)(4,1)(4,3) = 3
with 2: (2,1) = 1
with 7: (7,6) = 1
total = 12
Tests: let rec ... and ... mutual recursion, while + ref + array
mutation, in-place sort with auxiliary scratch array.
145 baseline programs total.
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
"closures.ml": 315,
|
||||
"coin_change.ml": 6,
|
||||
"count_change.ml": 406,
|
||||
"count_inversions.ml": 12,
|
||||
"csv.ml": 10,
|
||||
"dijkstra.ml": 7,
|
||||
"exception_handle.ml": 4,
|
||||
|
||||
Reference in New Issue
Block a user