From bb9e3991e345fc685497ff47288c3d28e3d6945e Mon Sep 17 00:00:00 2001 From: user Date: Tue, 6 Jun 2023 18:24:36 +0300 Subject: [PATCH 1/3] Added ShakerSort with tests --- src/main/kotlin/sort/ShakerSort.kt | 38 ++++++++++++++++++++++++++ src/test/kotlin/sort/ShakerSortTest.kt | 28 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/main/kotlin/sort/ShakerSort.kt create mode 100644 src/test/kotlin/sort/ShakerSortTest.kt diff --git a/src/main/kotlin/sort/ShakerSort.kt b/src/main/kotlin/sort/ShakerSort.kt new file mode 100644 index 0000000..a6c4252 --- /dev/null +++ b/src/main/kotlin/sort/ShakerSort.kt @@ -0,0 +1,38 @@ +package sort + +fun > shakerSort(arr: Array) { + var left = 0 + var right = arr.lastIndex + var swapped: Boolean + + do { + swapped = false + + for (i in left until right) { + if (arr[i] > arr[i + 1]) { + val temp = arr[i] + arr[i] = arr[i + 1] + arr[i + 1] = temp + swapped = true + } + } + + if (!swapped) { + break + } + + swapped = false + right-- + + for (i in right downTo left) { + if (arr[i] > arr[i + 1]) { + val temp = arr[i] + arr[i] = arr[i + 1] + arr[i + 1] = temp + swapped = true + } + } + + left++ + } while (swapped) +} \ No newline at end of file diff --git a/src/test/kotlin/sort/ShakerSortTest.kt b/src/test/kotlin/sort/ShakerSortTest.kt new file mode 100644 index 0000000..e93f74f --- /dev/null +++ b/src/test/kotlin/sort/ShakerSortTest.kt @@ -0,0 +1,28 @@ +package sort + +import org.junit.Assert.assertArrayEquals +import org.junit.Test + +class ShakerSortTest { + + @Test + fun testShakeSort() { + val array = arrayOf(4,3,2,8,1) + shakerSort(array) + assertArrayEquals(array, arrayOf(1,2,3,4,8)) + } + + @Test + fun testShakeSort2() { + val array = arrayOf(20, 5, 16, -1, 6) + shakerSort(array) + assertArrayEquals(array, arrayOf(-1, 5, 6, 16, 20)) + } + + @Test + fun testShakeSort3() { + val array = arrayOf("A", "D", "E", "C", "B") + shakerSort(array) + assertArrayEquals(array, arrayOf("A", "B", "C", "D", "E")) + } +} \ No newline at end of file From 85bfa66da247d17f33d3687833a27cd9f4209e83 Mon Sep 17 00:00:00 2001 From: user Date: Tue, 6 Jun 2023 18:24:36 +0300 Subject: [PATCH 2/3] Added ShakerSort with tests --- src/main/kotlin/sort/ShakerSort.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/sort/ShakerSort.kt b/src/main/kotlin/sort/ShakerSort.kt index a6c4252..d6f8791 100644 --- a/src/main/kotlin/sort/ShakerSort.kt +++ b/src/main/kotlin/sort/ShakerSort.kt @@ -1,5 +1,16 @@ package sort +/** + * This function implements the Shaker Sort. + * + * @param array The array to be sorted + * Sorts the array in increasing order + * + * Worst-case performance O(n2) + * Best-case performance O(n) + * Average-case performance O(n2) + * Worst-case space complexity O(n2) + */ fun > shakerSort(arr: Array) { var left = 0 var right = arr.lastIndex @@ -35,4 +46,4 @@ fun > shakerSort(arr: Array) { left++ } while (swapped) -} \ No newline at end of file +} From 86daf14fff95a9b3efdea1838baf694188496b88 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 7 Jun 2023 12:45:21 +0300 Subject: [PATCH 3/3] Added ShakerSort with tests --- src/test/kotlin/sort/ShakerSortTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/kotlin/sort/ShakerSortTest.kt b/src/test/kotlin/sort/ShakerSortTest.kt index e93f74f..26d0003 100644 --- a/src/test/kotlin/sort/ShakerSortTest.kt +++ b/src/test/kotlin/sort/ShakerSortTest.kt @@ -25,4 +25,4 @@ class ShakerSortTest { shakerSort(array) assertArrayEquals(array, arrayOf("A", "B", "C", "D", "E")) } -} \ No newline at end of file +}