Tipo de bolha

Harshit Jindal 12 outubro 2023
  1. Algoritmo de classificação de bolhas
  2. Exemplo de algoritmo de classificação de bolhas
  3. Implementação do algoritmo de classificação de bolhas
  4. Complexidade do algoritmo de classificação por bolha
Tipo de bolha

A classificação por bolha é um algoritmo de classificação simples. Funciona por comparação repetida de elementos adjacentes e trocando-os se estiverem na ordem errada. As comparações repetidas borbulham o menor / maior elemento no final da matriz e, portanto, esse algoritmo é denominado bubble sort. Embora ineficiente, ainda representa a base para algoritmos de classificação.

Algoritmo de classificação de bolhas

Vamos supor que temos um array não classificado A[] contendo n elementos.

  • Comece a partir do par dos dois primeiros elementos (A[0] e A[1]), compare seus valores e troque-os se não estiverem na ordem correta. Faça o mesmo para o próximo par (A[1] e A[2]) e mova da mesma forma para o resto da matriz. O menor / maior elemento está na última posição após esta etapa.
  • Repita as etapas acima (n-2) vezes para as iterações restantes. Reduza o tamanho do array em um a cada vez, pois o último elemento já está classificado. O menor / maior elemento nesta iteração se move para a posição mais à direita.

A etapa 1 no algoritmo acima também é chamada de aprovação. Para classificar uma matriz de tamanho n, são necessários passes n-1.

Exemplo de algoritmo de classificação de bolhas

Suponha que temos o array: (5,3,4,2,1). Vamos classificá-lo usando o algoritmo de classificação de bolhas.

  • Primeira passagem:
(5 3 4 2 1) (3 5 4 2 1) (3 < 5 trocados)
(3 5 4 2 1) (3 4 5 2 1) (4 < 5 trocados)
(3 4 5 2 1) (3 4 2 5 1) (2 < 5 trocados)
(3 4 2 5 1) (3 4 2 1 5) (1 < 5 trocados)
  • Segundo Passe:
(3 4 2 1 5) (3 4 2 1 5)
(3 4 2 1 5) (3 2 4 1 5) (2 < 4 trocados)
(3 2 4 1 5) (3 2 1 4 5) (1 < 4 trocados)
  • Terceiro Passe:
(3 2 1 4 5) (2 3 1 4 5) (2 < 3 trocados)
(2 3 1 4 5) (2 1 3 4 5) (1 < 3 trocados)
  • Quarto Passe:
(2 1 3 4 5) (1 2 3 4 5) (1 < 2 trocados)

Obtemos a matriz classificada após a quarta passagem - (1 2 3 4 5)

Implementação do algoritmo de classificação de bolhas

#include <iostream>

using namespace std;
void bubble_sort(int arr[], int n) {
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        swap(arr[j], arr[j + 1]);
      }
    }
  }
}
int main() {
  int n = 5;
  int arr[5] = {5, 3, 4, 2, 1};
  cout << "Input array: ";
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << "\n";
  bubble_sort(arr, n);  // Sort elements in ascending order
  cout << "Output array: ";
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << "\n";
}

Complexidade do algoritmo de classificação por bolha

Complexidade de tempo

  • Caso Médio

Em média, as comparações n-i são feitas na i-ésima passagem do tipo de bolha. Portanto, se houver n passes, a complexidade de tempo média pode ser dada por

(n-1) + (n-2) + (n-3) ..... + 1 = n*(n-1)/2

Logo, a complexidade do tempo é da ordem de O(n2).

  • Pior caso

O pior caso ocorre quando a matriz é classificada inversamente e o número máximo de comparações e trocas deve ser executado.

O pior caso de complexidade de tempo é O(n2).

  • Melhor caso

O melhor caso ocorre quando a matriz já está classificada e, então, apenas N comparações são necessárias.

O melhor caso de complexidade de tempo é O(n).

Complexidade do Espaço

A Complexidade de Espaço para este algoritmo é O(n) porque nenhuma memória extra além de uma variável temporária é necessária.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artigo relacionado - Sort Algorithm