Advertisement
kyle1320

Recursive BogoSort..

Nov 8th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.15 KB | None | 0 0
  1. public static <T extends Comparable<? super T>> void recursiveBogoSort(T[] arr) {
  2.     bogoRecurse(arr, 0, arr.length);
  3. }
  4.  
  5. private static <T extends Comparable<? super T>> void bogoRecurse(T[] arr, int min, int max) {
  6.     if (min >= max-1)
  7.         return;
  8.  
  9.     int mid = (min + max) / 2;
  10.  
  11.     bogoRecurse(arr, min, mid);
  12.     bogoRecurse(arr, mid, max);
  13.  
  14.     bogoSort(arr, min, max);
  15. }
  16.  
  17. private static <T extends Comparable<? super T>> void bogoSort(T arr[], int min, int max) {
  18.     randomize(arr, min, max);
  19.  
  20.     if (!isSorted(arr, min, max))
  21.         bogoSort(arr, min, max);
  22. }
  23.  
  24. public static void randomize(Object[] arr, int min, int max) {
  25.     for (int i=min; i < max; i++) {
  26.         int swap = (int)(Math.random()*(max-min))+min;
  27.         swapElements(arr, swap, i);
  28.     }
  29. }
  30.  
  31. private static void swapElements(Object[] arr, int index1, int index2) {
  32.     Object temp = arr[index1];
  33.     arr[index1] = arr[index2];
  34.     arr[index2] = temp;
  35. }
  36.  
  37. private static <T extends Comparable<? super T>> boolean isSorted(T[] arr, int min, int max) {
  38.     for (int i=min+1; i < max; i++)
  39.         if ((arr[i-1] == null && arr[i] != null) || (arr[i] != null && arr[i].compareTo(arr[i-1]) < 0))
  40.             return false;
  41.  
  42.     return true;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement