forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 1
/
BogoSort.java
49 lines (45 loc) · 1.17 KB
/
BogoSort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
*
* @author Marcelo Wischniowski <marcelowisc at gmail.com>
*/
public class BogoSort {
/**
* @param vetor
*/
public int[] sort(int[] vetor) {
// Verifica se o vetor está ordenado
while (!isSorted(vetor)) {
// Embaralha o vetor pra tentar ordenar aleatoriamente
shuffle(vetor);
}
return vetor;
}
/**
* Verifica se o vetor está ordenado
*
* @param vetor
* @return
*/
private static boolean isSorted(int[] vetor) {
for (int i = 0; i < (vetor.length - 1); ++i) {
if (vetor[i] > vetor[i + 1]) {
return false;
}
}
return true;
}
/**
* Embaralha o vetor pra tentar ordenar aleatoriamente
*
* @param vetor Vetor a ser ordenado
*/
private static void shuffle(int[] vetor) {
for (int x = 0; x < vetor.length; ++x) {
int index1 = (int) (Math.random() * vetor.length),
index2 = (int) (Math.random() * vetor.length);
int a = vetor[index1];
vetor[index1] = vetor[index2];
vetor[index2] = a;
}
}
}