package br.com.alura.notas;
public class TestaOrdenacaoRapida { // QuickSort
public static void main(String[] args) {
String[] nomes = { "Maria", "Camila", "Fernando", "Jonas", "Andressa", "Paloma", "Alberto", "Junior", "Enzo",
"Paulo" };
ordena(nomes, 0, nomes.length);
for (int atual = 0; atual < nomes.length; atual++) {
System.out.println(nomes[atual]);
}
}
private static void ordena(String[] string, int de, int ate) {
int elementos = ate - de;
if (elementos > 1) {
int posicaoDoPivo = particiona(string, de, ate);
ordena(string, ate, posicaoDoPivo);
ordena(string, posicaoDoPivo + 1, ate);
}
}
private static int particiona(String[] nomes, int de, int ate) {
String pivo = nomes[ate - 1];
int menores = 0;
for (int analise = 0; analise < ate - 1; analise++) {
String atual = nomes[analise];
if (atual.compareTo(pivo) < 0) {
troca(nomes, analise, menores);
menores++;
}
}
troca(nomes, ate - 1, menores);
return menores;
}
private static void troca(String[] string, int de, int para) {
String string1 = string[de];
String string2 = string[para];
string[de] = string2;
string[para] = string1;
}
}