From 8b1e65b346e3174702b781ed646e2d991d39b7e3 Mon Sep 17 00:00:00 2001 From: Alex Klymenko Date: Sat, 29 Jun 2024 23:46:30 +0200 Subject: [PATCH 1/3] refactor: improving naming, adding standard test --- DIRECTORY.md | 3 +- pmd-exclude.properties | 2 +- .../sorts/BubbleSortRecursion.java | 57 ------------------- .../sorts/BubbleSortRecursive.java | 35 ++++++++++++ .../sorts/BubbleSortRecursiveTest.java | 8 +++ 5 files changed, 46 insertions(+), 59 deletions(-) delete mode 100644 src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java create mode 100644 src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java create mode 100644 src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java diff --git a/DIRECTORY.md b/DIRECTORY.md index c033fe307ab2..6cecfef02de5 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -490,7 +490,7 @@ * [BitonicSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BitonicSort.java) * [BogoSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BogoSort.java) * [BubbleSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSort.java) - * [BubbleSortRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java) + * [BubbleSortRecursive](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java) * [BucketSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BucketSort.java) * [CircleSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/CircleSort.java) * [CocktailShakerSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java) @@ -859,6 +859,7 @@ * [BinaryInsertionSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java) * [BogoSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BogoSortTest.java) * [BubbleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BubbleSortTest.java) + * [BubbleSortRecursiveTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java) * [BucketSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BucketSortTest.java) * [CircleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CircleSortTest.java) * [CocktailShakerSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CocktailShakerSortTest.java) diff --git a/pmd-exclude.properties b/pmd-exclude.properties index eb199da3a0d3..2ff6ea53a381 100644 --- a/pmd-exclude.properties +++ b/pmd-exclude.properties @@ -76,7 +76,7 @@ com.thealgorithms.searches.InterpolationSearch=UselessParentheses com.thealgorithms.searches.KMPSearch=UselessParentheses com.thealgorithms.searches.LinearSearchThread=EmptyCatchBlock com.thealgorithms.searches.RabinKarpAlgorithm=UselessParentheses -com.thealgorithms.sorts.BubbleSortRecursion=UselessParentheses +com.thealgorithms.sorts.BubbleSortRecursive=UselessParentheses com.thealgorithms.sorts.CircleSort=EmptyControlStatement com.thealgorithms.sorts.CombSort=UselessParentheses com.thealgorithms.sorts.DutchNationalFlagSort=UselessParentheses diff --git a/src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java b/src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java deleted file mode 100644 index 10197969e853..000000000000 --- a/src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.thealgorithms.sorts; - -import java.util.Random; - -/** - * BubbleSort algorithm implements using recursion - */ -public class BubbleSortRecursion implements SortAlgorithm { - - public static void main(String[] args) { - Integer[] array = new Integer[10]; - - Random random = new Random(); - /* generate 10 random numbers from -50 to 49 */ - for (int i = 0; i < array.length; ++i) { - array[i] = random.nextInt(100) - 50; - } - - BubbleSortRecursion bubbleSortRecursion = new BubbleSortRecursion(); - bubbleSortRecursion.sort(array); - - /* check array is sorted or not */ - for (int i = 0; i < array.length - 1; ++i) { - assert (array[i].compareTo(array[i + 1]) <= 0); - } - } - - /** - * @param unsorted - an array should be sorted - * @return sorted array - */ - @Override - public > T[] sort(T[] unsorted) { - bubbleSort(unsorted, unsorted.length); - return unsorted; - } - - /** - * BubbleSort algorithm implements using recursion - * - * @param unsorted array contains elements - * @param len length of given array - */ - private static > void bubbleSort(T[] unsorted, int len) { - boolean swapped = false; - /* flag to check if array is sorted or not */ - for (int i = 0; i < len - 1; ++i) { - if (SortUtils.greater(unsorted[i], unsorted[i + 1])) { - SortUtils.swap(unsorted, i, i + 1); - swapped = true; - } - } - if (swapped) { - bubbleSort(unsorted, len - 1); - } - } -} diff --git a/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java b/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java new file mode 100644 index 000000000000..4788b6931b2d --- /dev/null +++ b/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java @@ -0,0 +1,35 @@ +package com.thealgorithms.sorts; + +/** + * BubbleSort algorithm implements using recursion + */ +public class BubbleSortRecursive implements SortAlgorithm { + /** + * @param array - an array should be sorted + * @return sorted array + */ + @Override + public > T[] sort(T[] array) { + bubbleSort(array, array.length); + return array; + } + + /** + * BubbleSort algorithm implements using recursion + * + * @param array array contains elements + * @param len length of given array + */ + private static > void bubbleSort(T[] array, int len) { + boolean swapped = false; + for (int i = 0; i < len - 1; ++i) { + if (SortUtils.greater(array[i], array[i + 1])) { + SortUtils.swap(array, i, i + 1); + swapped = true; + } + } + if (swapped) { + bubbleSort(array, len - 1); + } + } +} diff --git a/src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java b/src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java new file mode 100644 index 000000000000..e05842f46be8 --- /dev/null +++ b/src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java @@ -0,0 +1,8 @@ +package com.thealgorithms.sorts; + +public class BubbleSortRecursiveTest extends SortingAlgorithmTest { + @Override + SortAlgorithm getSortAlgorithm() { + return new BubbleSortRecursive(); + } +} From 575a00d9c45729b9c2b035dd3b372bc560217763 Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Sun, 30 Jun 2024 19:46:45 +0200 Subject: [PATCH 2/3] style: remove `BubbleSortRecursive` from pmd exclude list --- pmd-exclude.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/pmd-exclude.properties b/pmd-exclude.properties index 2ff6ea53a381..b7bc6f074d02 100644 --- a/pmd-exclude.properties +++ b/pmd-exclude.properties @@ -76,7 +76,6 @@ com.thealgorithms.searches.InterpolationSearch=UselessParentheses com.thealgorithms.searches.KMPSearch=UselessParentheses com.thealgorithms.searches.LinearSearchThread=EmptyCatchBlock com.thealgorithms.searches.RabinKarpAlgorithm=UselessParentheses -com.thealgorithms.sorts.BubbleSortRecursive=UselessParentheses com.thealgorithms.sorts.CircleSort=EmptyControlStatement com.thealgorithms.sorts.CombSort=UselessParentheses com.thealgorithms.sorts.DutchNationalFlagSort=UselessParentheses From b3232f7b2e609227bb29639cab3eea588a069b6e Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Sun, 30 Jun 2024 19:49:12 +0200 Subject: [PATCH 3/3] docs: typo fix --- src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java b/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java index 4788b6931b2d..d9cc00f95b69 100644 --- a/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java +++ b/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java @@ -1,7 +1,7 @@ package com.thealgorithms.sorts; /** - * BubbleSort algorithm implements using recursion + * BubbleSort algorithm implemented using recursion */ public class BubbleSortRecursive implements SortAlgorithm { /**