From 7f49918bfd0bce776e51c4e1814ade0f0e78a0c4 Mon Sep 17 00:00:00 2001 From: Amir <43786077+ahsNT@users.noreply.github.com> Date: Tue, 12 Oct 2021 18:20:57 +0200 Subject: [PATCH] Add Stooge Sort (#2521) (#2522) --- Sorts/StoogeSort.java | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Sorts/StoogeSort.java diff --git a/Sorts/StoogeSort.java b/Sorts/StoogeSort.java new file mode 100644 index 000000000..6669d7f12 --- /dev/null +++ b/Sorts/StoogeSort.java @@ -0,0 +1,51 @@ +package Sorts; + +/** + * @author Amir Hassan (https://github.com/ahsNT) + * @see SortAlgorithm + */ +public class StoogeSort implements SortAlgorithm { + + @Override + public > T[] sort(T[] unsortedArray) { + sort(unsortedArray, 0, unsortedArray.length); + return unsortedArray; + } + + public > T[] sort(T[] unsortedArray, int start, int end) { + if (SortUtils.less(unsortedArray[end - 1], unsortedArray[start])) { + T temp = unsortedArray[start]; + unsortedArray[start] = unsortedArray[end - 1]; + unsortedArray[end - 1] = temp; + } + + int len = end - start; + if (len > 2) { + int third = len / 3; + sort(unsortedArray, start, end - third); + sort(unsortedArray, start + third, end); + sort(unsortedArray, start, end - third); + } + return unsortedArray; + } + + public static void main(String[] args) { + StoogeSort stoogeSort = new StoogeSort(); + + Integer[] integerArray = {8, 84, 53, 953, 64, 2, 202}; + // Print integerArray unsorted + SortUtils.print(integerArray); + + stoogeSort.sort(integerArray); + // Print integerArray sorted + SortUtils.print(integerArray); + + String[] stringArray = {"g", "d", "a", "b", "f", "c", "e"}; + // Print stringArray unsorted + SortUtils.print(stringArray); + + stoogeSort.sort(stringArray); + // Print stringArray sorted + SortUtils.print(stringArray); + } +}