Eu procurei no google, aki no guj, e em vários sites, e não consegui achar nenhum código de Quicksort que eu conseguisse usar, ou algum que eu consiga usar
eu peguei este do wikipedia, mas não sei como passar esse parametro Comparator, eu preciso ordenar um vetor de Strings em ordem alfabetica, e não consigo usar, ai vai o codigo do quicksort que eu peguei:
import java.util.Comparator;
import java.util.Random;
public class Quicksort {
public static final Random RND = new Random();
private static void swap(Object[] array, int i, int j) {
Object tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
private int partition(Object[] array, int begin, int end, Comparator cmp) {
int index = begin + RND.nextInt(end - begin + 1);
Object pivot = array[index];
swap(array, index, end);
for (int i = index = begin; i < end; ++ i) {
if (cmp.compare(array[i+1], pivot) <= 0) {
swap(array, index++, i);
} }
swap(array, index, end);
return (index);
}
private void qsort(Object[] array, int begin, int end, Comparator cmp) {
if (end > begin) {
int index = partition(array, begin, end, cmp);
qsort(array, begin, index, cmp);
qsort(array, index, end, cmp);
} }
public void sort(Object[] array, Comparator cmp) {
qsort(array, 0, array.length - 1, cmp);
}
}
Se alguem puder me explicar o funcionamento disso vai ser de muito ajuda, muito obrigado!!
abraço