// Java Program to implement BogoSort
public class Main
{
// Sorts array a[0..n-1] using Bogo sort
void bogoSort( int [ ] a)
{
// if array is not sorted then shuffle the
// array again
while ( isSorted( a) == false )
shuffle( a) ;
}
// To generate permuatation of the array
void shuffle( int [ ] a)
{
// Math.random() returns a double positive
// value, greater than or equal to 0.0 and
// less than 1.0.
for ( int i= 1 ; i <= n; i++ )
swap
( a, i,
( int ) ( Math .
random ( ) * i
) ) ; }
// Swapping 2 elements
void swap( int [ ] a, int i, int j)
{
int temp = a[ i] ;
a[ i] = a[ j] ;
a[ j] = temp;
}
// To check if array is sorted or not
boolean isSorted( int [ ] a)
{
for ( int i= 1 ; i< a.length ; i++ )
if ( a[ i] < a[ i- 1 ] )
return false ;
return true ;
}
// Prints the array
void printArray( int [ ] arr)
{
for ( int i= 0 ; i< arr.length ; i++ )
System .
out .
print ( arr
[ i
] + " " ) ; }
public static void main
( String [ ] args
) {
//Enter array to be sorted here
int [ ] a = { 3 , 2 , 5 , 1 , 0 , 4 } ;
BogoSort ob = new BogoSort( ) ;
ob.bogoSort ( a) ;
System .
out .
print ( "Sorted array: " ) ; ob.printArray ( a) ;
}
}
Ly8gSmF2YSBQcm9ncmFtIHRvIGltcGxlbWVudCBCb2dvU29ydCAKcHVibGljIGNsYXNzIE1haW4KeyAKICAgIC8vIFNvcnRzIGFycmF5IGFbMC4ubi0xXSB1c2luZyBCb2dvIHNvcnQgCiAgICB2b2lkIGJvZ29Tb3J0KGludFtdIGEpIAogICAgeyAKICAgICAgICAvLyBpZiBhcnJheSBpcyBub3Qgc29ydGVkIHRoZW4gc2h1ZmZsZSB0aGUgCiAgICAgICAgLy8gYXJyYXkgYWdhaW4gCiAgICAgICAgd2hpbGUgKGlzU29ydGVkKGEpID09IGZhbHNlKSAKICAgICAgICAgICAgc2h1ZmZsZShhKTsgCiAgICB9IAogIAogICAgLy8gVG8gZ2VuZXJhdGUgcGVybXVhdGF0aW9uIG9mIHRoZSBhcnJheSAKICAgIHZvaWQgc2h1ZmZsZShpbnRbXSBhKSAKICAgIHsgCiAgICAgICAgIC8vIE1hdGgucmFuZG9tKCkgcmV0dXJucyBhIGRvdWJsZSBwb3NpdGl2ZSAKICAgICAgICAgLy8gdmFsdWUsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAgYW5kIAogICAgICAgICAvLyBsZXNzIHRoYW4gMS4wLiAKICAgICAgICAgZm9yIChpbnQgaT0xOyBpIDw9IG47IGkrKykgCiAgICAgICAgICAgICBzd2FwKGEsIGksIChpbnQpKE1hdGgucmFuZG9tKCkqaSkpOyAKICAgIH0gCiAgCiAgICAvLyBTd2FwcGluZyAyIGVsZW1lbnRzIAogICAgdm9pZCBzd2FwKGludFtdIGEsIGludCBpLCBpbnQgaikgCiAgICB7IAogICAgICAgIGludCB0ZW1wID0gYVtpXTsgCiAgICAgICAgYVtpXSA9IGFbal07IAogICAgICAgIGFbal0gPSB0ZW1wOyAKICAgIH0gCiAgCiAgICAvLyBUbyBjaGVjayBpZiBhcnJheSBpcyBzb3J0ZWQgb3Igbm90IAogICAgYm9vbGVhbiBpc1NvcnRlZChpbnRbXSBhKSAKICAgIHsgCiAgICAgICAgZm9yIChpbnQgaT0xOyBpPGEubGVuZ3RoOyBpKyspIAogICAgICAgICAgICBpZiAoYVtpXSA8IGFbaS0xXSkgCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IAogICAgICAgIHJldHVybiB0cnVlOyAKICAgIH0gCiAgCiAgICAvLyBQcmludHMgdGhlIGFycmF5IAogICAgdm9pZCBwcmludEFycmF5KGludFtdIGFycikgCiAgICB7IAogICAgICAgIGZvciAoaW50IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIAogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGFycltpXSArICIgIik7IAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOyAKICAgIH0gCiAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSAKICAgIHsgCiAgICAgICAgLy9FbnRlciBhcnJheSB0byBiZSBzb3J0ZWQgaGVyZSAKICAgICAgICBpbnRbXSBhID0gezMsIDIsIDUsIDEsIDAsIDR9OyAKICAgICAgICBCb2dvU29ydCBvYiA9IG5ldyBCb2dvU29ydCgpOyAKICAKICAgICAgICBvYi5ib2dvU29ydChhKTsgCiAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludCgiU29ydGVkIGFycmF5OiAiKTsgCiAgICAgICAgb2IucHJpbnRBcnJheShhKTsgCiAgICB9IAp9IA==