Olá a todos!
Fiz esse código para ordenar lexicograficamente arrays de String, mas não está funcionando, ele roda, mas a saída não é a esperada...
Alguém pode me ajudar? Pois já passei dias mexendo nesse código e não consegui achar o erro...
CÓDIGO:
public class QuickS {
public int acharPivo(String[] s) {
return (int) Math.floor(s.length / 2);
}
public int particiona(String[] array, int i, int f) {
int a = i + 1;
int b = f;
int pivo = acharPivo(array);
while (a < b) {
while (a <= f && array[a].compareTo(array[pivo]) <= 0) {
a++;
}
while (array[b].compareTo(array[pivo]) > 0) {
b--;
}
if (a < b) {
String temp = array[a];
array[a] = array[b];
array[b] = temp;
}
}
String temp = array[b];
array[b] = array[i];
array[i] = temp;
return b;
}
public void quicksort(String[] array, int i, int f) {
if (i < f) {
int p = particiona(array, i, f);
quicksort(array, i, p - 1);
quicksort(array, p + 1, f);
}
}
public void quicksort(String[] array) {
quicksort(array, 0, (array.length - 1));
}
public static void main(String[] args) {
QuickS sorting = new QuickS();
String[] nomes = new String[6];
nomes[0] = "flavio";
nomes[1] = "fernanda";
nomes[2] = "lamartine";
nomes[3] = "ideginaldo";
nomes[4] = "luiza";
nomes[5] = "giselly";
for(int i = 0; i < 6; i++) {
System.out.print(nomes[i]);
System.out.print(" ");
}
System.out.println("");
sorting.quicksort(nomes);
for(int i = 0; i < 6; i++) {
System.out.print(nomes[i]);
System.out.print(" ");
}
}
}
Abraço!
