Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static <T extends Comparable<? super T>> void recursiveBogoSort(T[] arr) {
- bogoRecurse(arr, 0, arr.length);
- }
- private static <T extends Comparable<? super T>> void bogoRecurse(T[] arr, int min, int max) {
- if (min >= max-1)
- return;
- int mid = (min + max) / 2;
- bogoRecurse(arr, min, mid);
- bogoRecurse(arr, mid, max);
- bogoSort(arr, min, max);
- }
- private static <T extends Comparable<? super T>> void bogoSort(T arr[], int min, int max) {
- randomize(arr, min, max);
- if (!isSorted(arr, min, max))
- bogoSort(arr, min, max);
- }
- public static void randomize(Object[] arr, int min, int max) {
- for (int i=min; i < max; i++) {
- int swap = (int)(Math.random()*(max-min))+min;
- swapElements(arr, swap, i);
- }
- }
- private static void swapElements(Object[] arr, int index1, int index2) {
- Object temp = arr[index1];
- arr[index1] = arr[index2];
- arr[index2] = temp;
- }
- private static <T extends Comparable<? super T>> boolean isSorted(T[] arr, int min, int max) {
- for (int i=min+1; i < max; i++)
- if ((arr[i-1] == null && arr[i] != null) || (arr[i] != null && arr[i].compareTo(arr[i-1]) < 0))
- return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement