Bóson Treinamentos em Ciência e Tecnologia

Ordenação de Arrays em C com o método Bubblesort

Ordenando vetores em C com algoritmo de bolhas

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:

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

 

Sair da versão mobile