Ordenação de Arrays em C com o método Bubblesort
Ordenação de Arrays em C com o método Bubblesort
Existem diversos métodos para realizar a ordenação do conteúdo de um array unidimensional (vetor), como os algoritmos Bubblesort, Quicksort e Mergesort. Esta é uma tarefa muito importante, frequentemente realizada durante o processo de desenvolvimento de sistemas, pois arrays ordenados são, em muitos casos, imprescindíveis para que determinados algoritmos possam funcionar de forma adequada, como por exemplo a busca binária (que estudaremos em breve).
Nesta lição vamos falar sobre o método de classificação de arrays conhecido como Bubblesort (Classificação por bolhas).
Em comparação com outros métodos existentes, a classificação Bubblesort é, no geral, lenta, mas é o mais simples dos algoritmos de classificação, e encontra aplicação em determinadas situações, como a classificação de arquivos pequenos e conjuntos de dados que já se encontram semi-classificados.
O algoritmo bubblesort funciona, de forma simplificada, executando duas tarefas principais, que são executadas em loop até que os dados estejam totalmente ordenados (classificados). São elas:
- Comparação de itens adjacentes
- Troca de posição dos itens, quando for necessário
Os números em vermelho na figura a seguir ilustram o processo de ordenação do vetor com o algoritmo bubblesort. Note as trocas de posição que ocorrem sempre que um número anterior é maior do que um posterior no vetor, em comparações de dois em dois valores:
Para maiores informações sobre algoritmos de ordenação, em especial a ordenação por bolhas, consulte o vídeo do curso de lógica de programação da Bóson Treinamentos.
A seguir temos um exemplo de código de classificação por bolhas em linguagem C:
Código
#include <stdio.h> #include <stdlib.h> #include <locale.h> #define TAM 10 int main() { setlocale(LC_ALL, ""); int numeros[TAM]; int i, aux, contador; printf("Entre com dez números para preencher o array, e pressione enter após digitar cada um:\n"); for (i = 0; i < TAM; i++) { scanf("%d", &numeros[i]); } printf("Ordem atual dos itens no array:\n"); for (i = 0; i < TAM; i++) { printf("%4d", numeros[i]); } // Algoritmo de ordenação Bubblesort: for (contador = 1; contador < TAM; contador++) { for (i = 0; i < TAM - 1; i++) { if (numeros[i] > numeros[i + 1]) { aux = numeros[i]; numeros[i] = numeros[i + 1]; numeros[i + 1] = aux; } } } printf("\nElementos do array em ordem crescente:\n"); for (i = 0; i < TAM; i++) { printf("%4d", numeros[i]); } printf("\n"); return 0; } |
Neste exemplo, após criarmos um array de 10 posições, o preenchemos com números que são solicitados ao usuário do programa, em qualquer ordem. Então, aplicamos o algoritmo de classificação para ordenar os números armazenados, e então exibimos na saída esses valores, já classificados.
Anterior: Passando arrays como argumentos para funções
Escreva um comentário