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:

Algoritmo de classificação Bubblesort

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

 

Sobre Fábio dos Reis (1118 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*