diff --git a/Java/BogoSort.java b/Java/BogoSort.java new file mode 100644 index 0000000..6aa3be1 --- /dev/null +++ b/Java/BogoSort.java @@ -0,0 +1,49 @@ +class BogoSort +{ + // An optimized version of Bubble Sort + static void bogosort(int[] arr) + { + while(!isSorted(arr)) + { + shuffle(arr); + } + } + + static boolean isSorted(int[] arr) { + for(int i = 0; i < arr.length - 1; ++i) { + if(arr[i] > arr[i+1]) { + return false; + } + } + return true; + } + + //Shuffle Array + static void shuffle(int[] arr) { + for(int i = 0; i < arr.length; ++i) { + int index1 = (int) (Math.random() * arr.length), + index2 = (int) (Math.random() * arr.length); + int a = arr[index1]; + arr[index1] = arr[index2]; + arr[index2] = a; + } + } + + // Function to print an array + static void printArray(int arr[]) + { + int i; + for (i = 0; i < arr.length - 1; ++i) + System.out.print(arr[i] + " "); + System.out.println(); + } + + // Driver program + public static void main(String args[]) + { + int arr[] = { 64, 34, 25, 12, 22, 11, 90 }; + bogosort(arr); + System.out.println("Sorted array: "); + printArray(arr); + } +} diff --git a/Java/CocktailSort.java b/Java/CocktailSort.java new file mode 100644 index 0000000..c29741f --- /dev/null +++ b/Java/CocktailSort.java @@ -0,0 +1,74 @@ +// Java program for implementation of Cocktail Sort +public class CocktailSort { + void cocktailSort(int a[]) + { + boolean swapped = true; + int start = 0; + int end = a.length; + + while (swapped == true) { + // reset the swapped flag on entering the + // loop, because it might be true from a + // previous iteration. + swapped = false; + + // loop from bottom to top same as + // the bubble sort + for (int i = start; i < end - 1; ++i) { + if (a[i] > a[i + 1]) { + int temp = a[i]; + a[i] = a[i + 1]; + a[i + 1] = temp; + swapped = true; + } + } + + // if nothing moved, then array is sorted. + if (swapped == false) + break; + + // otherwise, reset the swapped flag so that it + // can be used in the next stage + swapped = false; + + // move the end point back by one, because + // item at the end is in its rightful spot + end = end - 1; + + // from top to bottom, doing the + // same comparison as in the previous stage + for (int i = end - 1; i >= start; i--) { + if (a[i] > a[i + 1]) { + int temp = a[i]; + a[i] = a[i + 1]; + a[i + 1] = temp; + swapped = true; + } + } + + // increase the starting point, because + // the last stage would have moved the next + // smallest number to its rightful spot. + start = start + 1; + } + } + + /* Prints the array */ + void printArray(int a[]) + { + int n = a.length; + for (int i = 0; i < n; i++) + System.out.print(a[i] + " "); + System.out.println(); + } + + // Driver method + public static void main(String[] args) + { + CocktailSort ob = new CocktailSort(); + int a[] = { 5, 1, 4, 2, 8, 0, 2 }; + ob.cocktailSort(a); + System.out.println("Sorted array"); + ob.printArray(a); + } +} \ No newline at end of file