From cd0fcb28cc8b0a68b5ac7927aba034301cfef9b9 Mon Sep 17 00:00:00 2001 From: Cody Bouche Date: Thu, 22 Jun 2023 17:53:04 -0500 Subject: [PATCH] insertionSort --- cadence/.DS_Store | Bin 0 -> 6148 bytes cadence/contracts/ArrayUtils.cdc | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 cadence/.DS_Store diff --git a/cadence/.DS_Store b/cadence/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..af44f59fe9bd3d353bc35c1c738d5b4d066e81c1 GIT binary patch literal 6148 zcmeHKISv9b477m)L_=;as-E5}n$io9ZT X?AOFL(CLUf9mt;n(}hL_eyzX*u#^?A literal 0 HcmV?d00001 diff --git a/cadence/contracts/ArrayUtils.cdc b/cadence/contracts/ArrayUtils.cdc index 2ddc104..9f121ee 100644 --- a/cadence/contracts/ArrayUtils.cdc +++ b/cadence/contracts/ArrayUtils.cdc @@ -56,4 +56,29 @@ pub contract ArrayUtils { return res } + pub fun insertionSort(_ array: [AnyStruct], _ f: ((AnyStruct, AnyStruct): Int)): [AnyStruct] { + + var arr: [AnyStruct] = [] + var i = 0 + while i < array.length { + arr.append(array[i]) + i = i + 1 + } + + let n = arr.length + i = 1 + while i < n { + let key = arr[i] + var j = i - 1 + + while j >= 0 && f(arr[j], key) < 0 { + arr[j + 1] = arr[j] + j = j - 1 + } + arr[j + 1] = key + i = i + 1 + } + + return arr + } } \ No newline at end of file