forked from TheAlgorithms/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStoogeSort.java
More file actions
39 lines (30 loc) · 1.02 KB
/
StoogeSort.java
File metadata and controls
39 lines (30 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.sorts;
import static com.sorts.SortUtils.swap;
import static com.sorts.SortUtils.less;
public class StoogeSort {
/**
* This method implements recursion StoogeSort
*
* @param arr array to store number elements
* @param f first element in the array
* @param l last element in the array
*/
public <T extends Comparable<T>> T[] sort(T[] arr, int f, int l) {
// Ends recursion when met
if (f >= l)
return arr;
if (less(arr[l], arr[f])) {
swap(arr, f, l);
}
if (l - f + 1 > 2) {
int entry = (l - f + 1) / 3;
// Does a recursive sort of the first two thirds elements
sort(arr, f, l - entry);
// Does a recursive sort of the last two thirds elements
sort(arr, f + entry, l);
// Another recursive sort first two thirds elements to confirm
sort(arr, f, l - entry);
}
return arr;
}
}