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