Como ordenar um vetor de inteiros com Portugol? | Algoritmo Bubble Sort | Aula 125

Поділитися
Вставка
  • Опубліковано 21 гру 2024

КОМЕНТАРІ •

  • @tpituca1027
    @tpituca1027 5 місяців тому

    Vc explica mto bem! Parabéns!

  • @WashingtonNeves
    @WashingtonNeves 3 роки тому +2

    Maravilhosa explicação, tão simples, grato pela instrução. estava procurando isso.

    • @programeseufuturo
      @programeseufuturo  3 роки тому

      Fico feliz em saber que ajudou.
      Obrigado pelo feedback Washington.

  • @raulcf1778
    @raulcf1778 Рік тому

    Salvou eu no trabalho, muito obg irmão ♥️

  • @gustavovieiramiranda4804
    @gustavovieiramiranda4804 3 роки тому +2

    Muito bom, vlw

  • @arturvargas5724
    @arturvargas5724 2 роки тому +1

    Muito obrigado!! Me salvou muito

  • @i_am_pt-br
    @i_am_pt-br 3 роки тому +1

    muito bom, faz um em ordem decrescente

    • @programeseufuturo
      @programeseufuturo  3 роки тому

      Para fazer em ordem decrescente basta inverter o teste feito na comparação de se(vet[i] > vet[i+1]) para se(vet[i] < vet[i+1])

  • @rafaeljupy6753
    @rafaeljupy6753 2 роки тому

    top!!!!

  • @isaacvicente
    @isaacvicente 2 роки тому +1

    Professor, eu já tinha visto um algoritmo que sorteia os valores num vetor sem repetir, acho até bem simples, olha aqui:
    const inteiro tam = 10
    inteiro vet[tam], cont = 0
    logico tem_igual
    //Estrutura para sortear números para um vetor sem repetir NENHUM valor.
    enquanto (cont < tam) {
    tem_igual = falso
    vet[cont] = sorteia(1, tam*2)
    para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) {
    se (vet[cont] == vet[cont_bus]) {
    tem_igual = verdadeiro
    pare
    }
    }
    se (nao tem_igual) {
    cont ++
    }
    }

    • @programeseufuturo
      @programeseufuturo  2 роки тому

      Bacana Isaac, mas perceba que são problemas diferentes. Na aula 125 o problema a ser tratado é ordenação, no seu exemplo é a não repetição de valores.

  • @quintinoneves
    @quintinoneves 2 роки тому +1

    Tem números que se repetem como eliminar??

    • @programeseufuturo
      @programeseufuturo  2 роки тому +1

      Olá Quintino.
      Não há uma forma automática para evitar repetições não. Você mesmo precisa programar isso, para cada novo valor sorteado é necessário percorrer o vetor e verificar se ele já foi sorteado, se sim, descarta e sorteia outro, senão, salva no vetor.

    • @quintinoneves
      @quintinoneves 2 роки тому +1

      @@programeseufuturo valeu obrigado!

    • @isaacvicente
      @isaacvicente 2 роки тому

      Opa amigo, há um algoritmo que fiz que resolve justamente esse problema:
      (todas as variáveis usadas você precisa declará-las antes, claro)
      //Estrutura para sortear números para um vetor sem repetir NENHUM valor.
      enquanto (cont < tam) {
      tem_igual = falso
      vet[cont] = sorteia(1, tam*2)
      para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) {
      se (vet[cont] == vet[cont_bus]) {
      tem_igual = verdadeiro
      pare
      }
      }
      se (nao tem_igual) {
      cont ++
      }
      }
      Comentários: esse "tem_igual" é uma variável do tipo logico, e verifica justamente se há pelo menos 1 valor igual, se tiver, ele para a estrutura 'para' e é verificado lá no final: se **não** tem igual então avançamos para o próximo elemento do vetor. Caso contrário, tudo é repetido, até que o valor sorteado seja diferente de todos os já sorteados.

  • @isaacvicente
    @isaacvicente 2 роки тому +1

    Achei bem interessante seus métodos de ordenação, porém eu aprendi esse daqui, será que ele é mais eficiente? 🤔
    //Ordenando os valores do vetor pela técnica do algoritmo de ordenação Bubble Sort
    inteiro cont_p, cont_s, aux = 0
    para (cont_p = 0; cont_p < (tam - 1); cont_p ++) {
    para (cont_s = cont_p + 1; cont_s < tam; cont_s ++) {
    se (vet[cont_p] > vet[cont_s]) {
    aux = vet[cont_p]
    vet[cont_p] = vet[cont_s]
    vet[cont_s] = aux
    }
    }
    }
    Perceba que minhas variáveis "cont_p" e "cont_s" referem-se justamente ao contador principal e ao contador secundário.
    Cada contador é como se fosse uma seta, que vai comparando valor por valor. Como pode ser visto, o contador secundário percorre todas as posições que estão "à frente" do contador principal. A cada vez que o valor do vetor na posição do 'cont_p' for maior que a posição do 'cont_s', ocorre a troca. Assim, todos os valores anteriores ao 'cont_p' estão seguramente ordenados.

    • @programeseufuturo
      @programeseufuturo  2 роки тому

      Olá Issac. Parece que não entendeu esta aula rsrsrs. Ficou confusa? Difícil de entender?
      O algoritmo que você postou é exatamente o mesmo algoritmo que apresentei, possui o mesmo desempenho. Inclusive, apresento uma forma de torna-lo um pouco mais eficiente trocando o primeiro 'para' por um 'enquanto'.