Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions Java/BogoSort.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
74 changes: 74 additions & 0 deletions Java/CocktailSort.java
Original file line number Diff line number Diff line change
@@ -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);
}
}