Skip to content

Commit 208e1e9

Browse files
alxkmAlex Klymenkovil02
authored
refactor: BubbleSortRecursion: improving naming, adding standard test (#5267)
* refactor: improving naming, adding standard test * style: remove `BubbleSortRecursive` from pmd exclude list * docs: typo fix --------- Co-authored-by: Alex Klymenko <[email protected]> Co-authored-by: Piotr Idzik <[email protected]>
1 parent 758df7d commit 208e1e9

File tree

5 files changed

+45
-59
lines changed

5 files changed

+45
-59
lines changed

DIRECTORY.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@
490490
* [BitonicSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BitonicSort.java)
491491
* [BogoSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BogoSort.java)
492492
* [BubbleSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSort.java)
493-
* [BubbleSortRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java)
493+
* [BubbleSortRecursive](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSortRecursive.java)
494494
* [BucketSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BucketSort.java)
495495
* [CircleSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/CircleSort.java)
496496
* [CocktailShakerSort](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java)
@@ -859,6 +859,7 @@
859859
* [BinaryInsertionSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java)
860860
* [BogoSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BogoSortTest.java)
861861
* [BubbleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BubbleSortTest.java)
862+
* [BubbleSortRecursiveTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BubbleSortRecursiveTest.java)
862863
* [BucketSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BucketSortTest.java)
863864
* [CircleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CircleSortTest.java)
864865
* [CocktailShakerSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CocktailShakerSortTest.java)

pmd-exclude.properties

-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ com.thealgorithms.searches.InterpolationSearch=UselessParentheses
7676
com.thealgorithms.searches.KMPSearch=UselessParentheses
7777
com.thealgorithms.searches.LinearSearchThread=EmptyCatchBlock
7878
com.thealgorithms.searches.RabinKarpAlgorithm=UselessParentheses
79-
com.thealgorithms.sorts.BubbleSortRecursion=UselessParentheses
8079
com.thealgorithms.sorts.CircleSort=EmptyControlStatement
8180
com.thealgorithms.sorts.CombSort=UselessParentheses
8281
com.thealgorithms.sorts.DutchNationalFlagSort=UselessParentheses

src/main/java/com/thealgorithms/sorts/BubbleSortRecursion.java

-57
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.thealgorithms.sorts;
2+
3+
/**
4+
* BubbleSort algorithm implemented using recursion
5+
*/
6+
public class BubbleSortRecursive implements SortAlgorithm {
7+
/**
8+
* @param array - an array should be sorted
9+
* @return sorted array
10+
*/
11+
@Override
12+
public <T extends Comparable<T>> T[] sort(T[] array) {
13+
bubbleSort(array, array.length);
14+
return array;
15+
}
16+
17+
/**
18+
* BubbleSort algorithm implements using recursion
19+
*
20+
* @param array array contains elements
21+
* @param len length of given array
22+
*/
23+
private static <T extends Comparable<T>> void bubbleSort(T[] array, int len) {
24+
boolean swapped = false;
25+
for (int i = 0; i < len - 1; ++i) {
26+
if (SortUtils.greater(array[i], array[i + 1])) {
27+
SortUtils.swap(array, i, i + 1);
28+
swapped = true;
29+
}
30+
}
31+
if (swapped) {
32+
bubbleSort(array, len - 1);
33+
}
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.thealgorithms.sorts;
2+
3+
public class BubbleSortRecursiveTest extends SortingAlgorithmTest {
4+
@Override
5+
SortAlgorithm getSortAlgorithm() {
6+
return new BubbleSortRecursive();
7+
}
8+
}

0 commit comments

Comments
 (0)