Fiz um trabalho em MATLAB recentemente na faculdade onde eu apresentava essa diferença gritante entre o método bubble sort e o método shell sort.
Vou publicar hoje o método bubble sort em C e em breve darei sequencia com outros métodos de ordenação.
O método bubble sort (Ordenação bolha) recebeu esse nome por que durante sua ordenação os maiores números são ordenados primeiro, como as bolhas de um recipiente onde as maiores chegam primeiro a superfície. Ou seja, ele compara todos os números do início ao fim do vetor e sempre que o primeiro for maior ele inverte as posições. Terminando de verificar o vetor a primeira vez ele terá encontrado o maior número e na próxima passada ele não verificará o ultimo número ordenado.
Nesse código criei a função que ordena com o método Bubble Sort. Podemos assim mandar o vetor como argumento para ser ordenado por nossa função. Para facilitar a visualização do que ocorreu na função eu criei um vetor com valores de 1 a 10 embaralhados e mandei imprimir esses números antes de serem ordenados e depois de serem ordenados.
O algoritmo do bubble sort pode ser desenvolvido usando outras lógicas que no final terão o mesmo resultado. Porém, além deste método existem outros mais eficientes.
Vou publicar hoje o método bubble sort em C e em breve darei sequencia com outros métodos de ordenação.
O método bubble sort (Ordenação bolha) recebeu esse nome por que durante sua ordenação os maiores números são ordenados primeiro, como as bolhas de um recipiente onde as maiores chegam primeiro a superfície. Ou seja, ele compara todos os números do início ao fim do vetor e sempre que o primeiro for maior ele inverte as posições. Terminando de verificar o vetor a primeira vez ele terá encontrado o maior número e na próxima passada ele não verificará o ultimo número ordenado.
void bubbleSort(int v[], int tam) { int i, j, aux, troca; for(i = 0; i < tam; i++) { troca = 0; for(j = 0; j < (tam-1)-i; j++) { if(v[j] > v[j+1]) {//realiza troca dos elementos aux = v[j]; v[j] = v[j+1]; v[j+1] = aux; troca = 1; } } //se não foram realizadas trocas, vetor já está ordenado if(troca == 0) break; //sai do laço } } int main(int argc, char *argv[]) { int i, vet[10] = {10,9,3,6,7,5,1,8,4,2}; printf("Vetor atual: "); for(i = 0; i < 10; i++) //mostrar vetor desordenado printf("%d ", vet[i]); printf("\n"); system("pause"); //pausar bubbleSort(vet, 10); //chamada a função bubble enviando vetor e tamanho dele printf("\n\nVetor ordenado: "); for(i = 0; i < 10; i++) //mostrar vetor ordenado printf("%d ", vet[i]); printf("\n"); system("pause"); //pausar return 0; }
Nesse código criei a função que ordena com o método Bubble Sort. Podemos assim mandar o vetor como argumento para ser ordenado por nossa função. Para facilitar a visualização do que ocorreu na função eu criei um vetor com valores de 1 a 10 embaralhados e mandei imprimir esses números antes de serem ordenados e depois de serem ordenados.
O algoritmo do bubble sort pode ser desenvolvido usando outras lógicas que no final terão o mesmo resultado. Porém, além deste método existem outros mais eficientes.
Nenhum comentário:
Postar um comentário