Article image
Erick Lamartinne
Erick Lamartinne03/05/2023 23:27
Compartilhe

Algoritmo Bubble Sort comentado

    Uma anotação pessoal, mas que também pode ser informativo e ajudar a várias outras pessoas a entenderem melhor sobre esse algoritmo.

    Definição: O bubble sort é um algoritmo simples de ordenação que compara pares de elementos adjacentes e os troca se estiverem fora de ordem.

    #include<stdio.h>
    #include<stdlib.h>
    
    void trocar(int *a, int *b){ 
    int temp = *a; 
    *a = *b; 
    *b = temp; 
    }
    
    
    Essa é a declaração da função trocar, que recebe dois ponteiros para inteiros (int *a e int *b). Esta função tem como objetivo trocar o valor dos inteiros apontados pelos dois ponteiros. Ela é utilizada na implementação do Bubble Sort para trocar os valores dos elementos do vetor.
    void bubbleSort(int array[], int quantidade){ 
      int i, j; 
      for (i = 0; i < quantidade-1; i++){
          for (j = 0; j < quantidade-i-1; j++){
              if (array[j] > array[j+1]){
                  trocar(&array[j], &array[j+1]); 
              }
          }
      }
    }
    
    Essa é a declaração da função bubbleSort, que recebe um vetor de inteiros (int array[ ]) e a quantidade de elementos no vetor (int quantidade).
    Essa função implementa o algoritmo Bubble Sort, que é um algoritmo de ordenação simples, mas ineficiente para vetores grandes.
    O algoritmo é composto por dois laços for aninhados: o primeiro laço percorre todo o vetor, enquanto o segundo laço percorre somente os elementos ainda não ordenados (os elementos até quantidade-i-1).
    Em cada iteração do segundo laço, é verificado se o elemento atual é maior do que o próximo elemento. Se sim, a função trocar é utilizada para trocar os valores dos dois elementos.
    int main() {
    // Lê os dados de entrada:
    int quantidade;
    scanf("%d", &quantidade);
    int frascos[quantidade];
    for (int i = 0; i < quantidade; i++) {
        scanf("%d", &frascos[i]);
    }
    
    // Executa o algoritmo "bubbleSort" para ordenar os "frascos".
    bubbleSort(frascos, quantidade);
    
    // Imprime os "frascos" ordenados.
    for (int i = 0; i < quantidade; i++) {
        printf("%d ", frascos[i]);
    }
    
    return 0;
    }
    
    Essa é a função main, que é o ponto de entrada do programa.
    Ela começa lendo a quantidade de elementos do vetor (quantidade) com scanf, em seguida cria o vetor frascos com o tamanho especificado pela entrada quantidade e lê seus valores com um laço for.
    Depois disso, chama a função bubbleSort para ordenar o vetor frascos, imprime o vetor ordenado com um segundo laço for e retorna 0 para indicar que o programa executou corretamente.

    Informação adicional: Bubble Sort utiliza complexidade quadrática O(n²). Essa é a situação quando você tem dois laços encadeados. É o caso do Bubble Sort ou do Shell Sort.

    Compartilhe
    Comentários (2)
    Roberto Souza
    Roberto Souza - 09/05/2023 12:46

    perfeito

    Wallace Costa
    Wallace Costa - 03/05/2023 23:56

    Muito Bom Erick...