Enviado em 29/03/2013 - 16:31h
Boa tarde a todos! Estou precisando de ajuda pra contar as comparações feitas no algoritmos de ordenação insertsort, shellsort, quicksort e heapsort! No insert por exemplo já tentei de diversas maneiras..ele deve dar o mesmo número de comparações feitas no bubblesort e no select sort, não?
Aqui está minha implementação do insert! :
void InsertSort(Item *vet, int N) {
int i, j;
Item aux;
int compara=0;
int movimenta=0;
for (i = 1; i < N; i++) {
aux = vet[i];
j = i - 1;
if(aux.Chave < vet[j].Chave)
compara++;
while ((j >= 0) && (aux.Chave < vet[j].Chave)) {
vet[j + 1] = vet[j];
j--;
movimenta++;
}
vet[j + 1] = aux;
}
printf("O vetor ordenado:\n");
for (i = 0; i < N; i++) {
printf(" %d", vet[i]);
}
printf("\n\nComparações: %d \nMovimentações: %d\n", compara, movimenta);
}
se alguém puder me dar uma ideia de como contar certinho.. :)
Aqui está minha implementação do insert! :
void InsertSort(Item *vet, int N) {
int i, j;
Item aux;
int compara=0;
int movimenta=0;
for (i = 1; i < N; i++) {
aux = vet[i];
j = i - 1;
if(aux.Chave < vet[j].Chave)
compara++;
while ((j >= 0) && (aux.Chave < vet[j].Chave)) {
vet[j + 1] = vet[j];
j--;
movimenta++;
}
vet[j + 1] = aux;
}
printf("O vetor ordenado:\n");
for (i = 0; i < N; i++) {
printf(" %d", vet[i]);
}
printf("\n\nComparações: %d \nMovimentações: %d\n", compara, movimenta);
}
se alguém puder me dar uma ideia de como contar certinho.. :)