Adicionei um contador comp++ neste método de ordenação para que seja incrementado e, ao final, exiba quantas comparações foram realizadas. No entanto, o que ele apresenta é, em quantidade de impressões, quantas comparações foram feitas.
Exemplo: Se resultaram 30 comparações, ele não exibe 30, mas imprime trinta vezes COMP: 1. E sim, verifiquei, e a impressão não está dentro do while.
public class QuickSort1 {
public static void quickSort(int v[], int esquerda, int direita) {
int esq = esquerda;
int dir = direita;
int pivo = v[(esq + dir) / 2];
int troca;
int comp = 0;
while (esq <= dir) {
while (v[esq] < pivo) {
esq = esq + 1;
}
while (v[dir] > pivo) {
dir = dir - 1;
}
if (esq <= dir) {
troca = v[esq];
v[esq] = v[dir];
v[dir] = troca;
esq = esq + 1;
dir = dir - 1;
}
comp++;
}
if(dir > esquerda)
quickSort(v, esquerda, dir);
if(esq < direita)
quickSort(v, esq, direita);
System.out.println("COMP: "+comp);
}
public static void main(String args[]) {
int vet_size = 2;
int numbers[] = new int[vet_size];
for(int i=0; i<vet_size; i++) {
numbers[i] = i;
}
quickSort(numbers, 0, vet_size - 1);
for(int i = 0; i < vet_size; i++) {
System.out.println("Number["+i+"] = "+numbers[i]);
}
}
}
