INSERTION SORT | Algoritmos #5

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 พ.ย. 2024
  • Neste vídeo, continuamos o estudo dos algoritmos de ordenação, implementando a ordenação por inserção (insertion sort). A ordenação por inserção tenta imitar o processo que algumas pessoas utilizam (consciente ou inconscientemente) para ordenar cartas de baralho nas mãos durante um jogo. Abordando o aspecto da eficiência e da complexidade do algoritmo apresentado.
    Gostou? Temos vídeos de outros algoritmos de ordenação aqui no canal :)
    Se inscreva no canal para acompanhar todo o conteúdo e nos siga nas outras redes:
    *Instagram: @dinamicaprogramacao @kizzy_terra @ hallpaz
    *Twitter: @pgdinamica @kizzyterra @hallpaz
    Códigos do vídeo: github.com/pyt...
    Curta a Programação Dinâmica no facebook: program...
    Confira o nosso Medium: / programacaodinamica
    Confira os artigos no Python Café: pythoncafe.com.br
    #ordenação #algoritmos

ความคิดเห็น • 85

  • @chinfoplaya
    @chinfoplaya 3 หลายเดือนก่อน +1

    Cara, a forma que tu explicas detalhadamente torna o aprendizado bem mais agradável. Gratidão!

  • @RogerioCorteBrilhoBuselli
    @RogerioCorteBrilhoBuselli 6 หลายเดือนก่อน +3

    É uma geração que na comunicação, tem um dom ! Muito boa explicação, Parabéns ! Excelente vídeo ! Grande Abraço !

    • @pgdinamica
      @pgdinamica  6 หลายเดือนก่อน

      Obrigado!

  •  3 ปีที่แล้ว +13

    Nossa! É incrível como tudo o que eu ando estudando encontro aqui no canal de vocês. Não parem nunca.

    • @pgdinamica
      @pgdinamica  3 ปีที่แล้ว +2

      Obrigado, bons estudos!

  • @AllRox
    @AllRox 3 ปีที่แล้ว +58

    Meu irmão, se você vir como isso foi explicado numa aula de engenharia de software, onde o tutor insiste que o conteúdo está bom, você cortaria os pulsos! Muito obrigado pelo conteúdo de qualidade! Mandou muito bem na didática!

    • @pgdinamica
      @pgdinamica  3 ปีที่แล้ว +6

      Obrigado! Força aí nos estudos 👊🏾

    • @jeffersonanalisedesistema7680
      @jeffersonanalisedesistema7680 3 ปีที่แล้ว +3

      Meu amigo, não sei o que os professores de cursos superiores fazem ali, os caras são muito ruim. Estou pagando um curso de analise e desenvolvimento, mas estou estudando no TH-cam, como pessoas como o Hallisson, ele sim, deveria esta ocupando uma cadeira em uma faculdade. o cara é dez.

    • @Falaelvis
      @Falaelvis 3 ปีที่แล้ว

      @@pgdinamica Amigo, eu tentei entrar em contato pelo insta mas eu nao consegui.

    • @juliodonofreo
      @juliodonofreo 8 หลายเดือนก่อน

      QUE? algoritmo em aula de engenharia de software?

    • @AllRox
      @AllRox 8 หลายเดือนก่อน

      @@juliodonofreo sim, pq?

  • @beatrizav5565
    @beatrizav5565 4 ปีที่แล้ว +22

    MEU DEUS QUE CANAL PERFEITO VCS SÃO TUDO PRA MIM, OBRIGADA ALGORITMO DE RECOMENDAÇÕES DO TH-cam POR ME APRESENTAR ESSA MARAVILHA

    • @pgdinamica
      @pgdinamica  4 ปีที่แล้ว +1

      🙌🏾🙌🏾😁

  • @PatrickNerbasBR
    @PatrickNerbasBR ปีที่แล้ว +2

    Parabéns velho, tu é muito foda e ensina de uma forma muita didática , tenho 10 anos de desenvolvimento e agora to precisando rever estes conceitos, comprei vários cursos e disparado você tem o melhor conteúdo , muito grato pelo conteúdo , continue assim! Mais um inscrito ❤

  • @danielmelo9064
    @danielmelo9064 ปีที่แล้ว +1

    Aula fantástica, Hallison!! O insertion sort sempre foi o algoritmo que me deu mais dor de cabeça dentre os 3 mais simples pra ordenação.

  • @carolinnerabbi965
    @carolinnerabbi965 6 หลายเดือนก่อน +4

    nossa superrrr didático vc, adorei!!

    • @pgdinamica
      @pgdinamica  6 หลายเดือนก่อน

      Valeu!

  • @glauciof.pachecopadilha5876
    @glauciof.pachecopadilha5876 ปีที่แล้ว +2

    Muito bem explicado, parabéns!

  • @wandersonsilva5830
    @wandersonsilva5830 2 ปีที่แล้ว +2

    Na moral? Eu aprendi mais contigo em um vídeo de 15 minutos do que em um semestre inteiro de estrutura de dados em ADS. Continue com esse conteúdo EXCELENTE que você tem. Abraços

  • @victorpinasarnault9135
    @victorpinasarnault9135 ปีที่แล้ว +1

    Legal Hallison, entendi bem.
    Muito obrigado!

    • @pgdinamica
      @pgdinamica  ปีที่แล้ว

      Top! Bons estudos!

  • @reimiguel6597
    @reimiguel6597 หลายเดือนก่อน

    Muito bom. Top. Vai agregar muito nos meus estudos.

    • @pgdinamica
      @pgdinamica  หลายเดือนก่อน

      Que bom que vai ajudar! 😉

  • @ramonjales9941
    @ramonjales9941 2 ปีที่แล้ว +5

    Teria como trazer um sobre o "shell sort". Principalmente explicando o algoritmo. O conceito eu entendo, mas aquele algoritmo do shel sort é muito maluco. Desde ja, obrigado.

  • @gabrielalmeida8584
    @gabrielalmeida8584 ปีที่แล้ว +3

    Boa tarde! Eu fiz de utilizando dois for: Segue o código.
    import random
    any_numbers = random.sample(range(1, 100), 25)
    def insertion_sort(array):
    for i in range(1, len(array)):
    for j in range(i, 0, -1):
    if array[j] < array[j-1]:
    array[j], array[j-1] = array[j-1], array[j]
    return array

    • @pedromiotto
      @pedromiotto 5 หลายเดือนก่อน

      entendi graças a seu comentário, pelo dele eu não estava conseguindo, valeuuu

  • @fabiusmaia4033
    @fabiusmaia4033 2 ปีที่แล้ว +1

    Pra quem tiver dificuldade em entender esses algoritmos, eu aconselho criar uma lista aleatória e analisar como cada iteração interage com as linhas de código, por exemplo o array [5,3,7,9,6,14]:
    na primeira iteração o array[i] vai ser igual a 3, enquanto que o array[j] vai ser igual a 5, porque j = i -1. Já que 5 é maior do que 3, e o j é igual a 0, a função vai entrar no laço while e definir o elemento array[j+1] com o valor do elemento anterior array[j]. Nesse momento nossa lista vai estar assim:
    [5,5,7,9,6,14]
    Agora o j vai ser decrementado em 1, definindo o valor dele como -1, e como o valor dele é -1 e o while só vai continuar funcionando caso j >= 0, ele vai pular do laço e vai definir o elemento array[j+1] com o valor de array[i], que é o 3.
    Nossa lista vai ficar assim:
    [3,5,7,9,6,14]
    Agora é só repetir o mesmo procedimento pras outras iterações.

  • @mariafernandaferreira4401
    @mariafernandaferreira4401 ปีที่แล้ว +1

    Excelente explicação!

  • @guilhermeaco
    @guilhermeaco ปีที่แล้ว +1

    Excelente vídeo

  • @ThiagoMouraabreu
    @ThiagoMouraabreu 4 ปีที่แล้ว +1

    Ótimo video, simples,pratico e direto..parabéns pelo conteúdo.

  • @Leossj1
    @Leossj1 2 ปีที่แล้ว +1

    To vendo que vou levar um tempo até entender isso...

  • @Eliviery
    @Eliviery ปีที่แล้ว +1

    Alisson, você já tem um conteúdo exibindo o melhor e o pior caso dos algoritmos Insertion, Selection, Merge e Bubble?

  • @phideas8925
    @phideas8925 2 ปีที่แล้ว +1

    Tu é um gênio, muito obrigado pela ajuda

  • @jpgondim8960
    @jpgondim8960 3 ปีที่แล้ว

    mano eu te amo. sou da engenharia civil e to dando isso na unicamp e voce me salvou no laboratorio dessa semana eu te amo eternamente te amo te amo

  • @lucasantosmartins9084
    @lucasantosmartins9084 2 ปีที่แล้ว +1

    didática excelente

    • @pgdinamica
      @pgdinamica  2 ปีที่แล้ว +1

      Muito obrigado!

  • @danielcolobo
    @danielcolobo 2 ปีที่แล้ว +1

    Ae, valeu de mais!

  • @lazarok0963
    @lazarok0963 3 ปีที่แล้ว +2

    obrigado irmão

  • @adelaidezhayramakeup5239
    @adelaidezhayramakeup5239 2 ปีที่แล้ว +1

    seus videos são perfeitos

  • @raniel0511
    @raniel0511 3 ปีที่แล้ว +2

    Assistido ✔️
    Então basicamente é como se ele pegasse várias cartas(vou usar seu exemplo) e jogasse na mesa e pegasse de uma por um até construir uma nova mão com as cartas ordenadas? Ele "destrói" o array e monta ele de novo?
    Se for isso realmente não parece muito eficiente principalmente pra muitos elementos.

  • @majubarbosa8452
    @majubarbosa8452 4 ปีที่แล้ว

    Muito bom os videos sobre metodos de ordenacao! Aprendi a utilizar agora com vc! Estou aprendendo python neste momento e aos poucos aprendendo sua abrangencia, comandos e metodos... Parabens pelo trabalho! Continuem firmes! Ja ganharam uma seguidora :)

    • @pgdinamica
      @pgdinamica  4 ปีที่แล้ว +1

      Seja bem vinda, Maria! Bosn estudos!

  • @jessicarobertadesouzasanto112
    @jessicarobertadesouzasanto112 4 ปีที่แล้ว +1

    Explicação perfeita

  • @blueNeodymium
    @blueNeodymium 4 หลายเดือนก่อน

    A diferença entre o insertion sort e o bubble sort é que o insertion faz a comparação com os vizinhos em pequenas listas?

  • @gustavomartins007
    @gustavomartins007 4 ปีที่แล้ว +1

    top

  • @salubcosta
    @salubcosta ปีที่แล้ว

    Caraca brother! Mandou muito bem!!! Parabéns o/

  • @bernardobritto8352
    @bernardobritto8352 4 ปีที่แล้ว

    Fala mano, blz? Primeiro vídeo que vejo do seu canal e achei muito bom, mais 1 inscrito e vou agora ver os outros tipo de sorting! Parabéns pelo conteúdo

    • @pgdinamica
      @pgdinamica  4 ปีที่แล้ว

      Valeu, Bernardo! Seja bem vindo 😁

  • @edsonmatheushaas8706
    @edsonmatheushaas8706 2 ปีที่แล้ว +1

    a lista já ordenada não estava 100% ordenada ksksks, o 76 estava fora de ordem, ótimo vídeo e ótima aula

    • @pgdinamica
      @pgdinamica  2 ปีที่แล้ว +1

      Detalhe espacial somente para os mais atentos!

    • @jltaveira
      @jltaveira ปีที่แล้ว

      Também percebi isso

  • @nandoscottimuzzi95
    @nandoscottimuzzi95 ปีที่แล้ว

    Oi Halisson.
    tentei implementar um algoritmo baseado na explicacao que vc deu no quadro e saiu isso aqui. Vc poderia comentar o codigo? A primeira deficiencia que notei foi foi um aumento na complexidade de espaco pois criei uma nova lista. Podemos dizer que isso é um a variacao do Insertion_sort ? Obrigado desde já
    def insertion_sort(u):
    lista = []
    while(u):
    item = u.pop()
    if lista:
    # colocando em ordem
    i=0
    while (i < len(lista)):
    if item < lista[i]:
    lista.insert(i,item)
    break
    # se for menor que o pnultimo
    if i == len(lista)-1:
    #poe no final da lista se "item" nao for menor que o ultimo elemento da fila
    lista.append(item)
    break
    i=i+1
    else:
    #se for o primeiro elemnto a distribuir
    lista.insert(0,item)
    return lista

  • @CanalDoLuizFellipe
    @CanalDoLuizFellipe 2 หลายเดือนก่อน

    qual aplicativo/programa que você usa para escrever esses códigos do vídeo?

    • @pgdinamica
      @pgdinamica  2 หลายเดือนก่อน

      Visual Studio Code: Como Instalar Python e Visual Studio Code no Windows | Python do Jeito Certo 2.0
      th-cam.com/video/R9dLGLVqK9Q/w-d-xo.html

  • @richardribeiro1130
    @richardribeiro1130 5 ปีที่แล้ว

    Boa tarde tem algum vídeo falando sobre a ordenação por inserção tempo de consumo, ou seja o tempo de execução do mesmo?

    • @pgdinamica
      @pgdinamica  5 ปีที่แล้ว +1

      Sai hoje às 18:00h! Análise de complexidade da ordenação por seleção, por flutuação e por inserção também!

  • @arthurluiz7727
    @arthurluiz7727 2 ปีที่แล้ว

    Preocupado por ter entendido muito bem no quadro mas ter explodido os miolos e não ter entendido as trocas no código. Eu quero morrer T.T

    • @pgdinamica
      @pgdinamica  2 ปีที่แล้ว +1

      É normal. Tenta implementar por conta própria, lembrando da ideia do algoritmo. Se for preciso, esquematize a ideia em um papel antes. Depois de tentar - conseguindo ou não - assista ao vídeo novamente. Estudar é um processo ativo.

  • @FabricioRAPGOSPEL
    @FabricioRAPGOSPEL 5 ปีที่แล้ว

    vc pode mostrar esse algoritmo na integra passo a passo?

    • @pgdinamica
      @pgdinamica  5 ปีที่แล้ว

      Oi, @83Aibones, não entendi a pergunta 🤔. O vídeo explica o algoritmo completo (funcionamento e implementação) e a descrição tem link pro código produzido, inclusive os testes. O que você precisa?

    • @FabricioRAPGOSPEL
      @FabricioRAPGOSPEL 5 ปีที่แล้ว

      @@pgdinamica porque eu não sei como fazer pra rodar desde o começo.
      queria ver como foi montado desde o inicio.
      eu tenho que fazer esse trabalho e eu to perdido.
      1. Implemente os algoritmos de ordenação de acordo com a tabela.
      2. Teste cada algoritmos com quatro vetores (ver vetores ao final do documento)
      3. Calcule o tempo que demora em ordenar os vetores cada algoritmo.
      4. Fazer uma tabela com os resultados.
      5. Fazer uma analises dos resultados (analisar que caraterística tem cada vetor)
      6. Entregar um documento com:
      Nome do aluno
      Titulo do trabalho
      Descrição de cada algoritmo
      Código da cada algoritmo
      Tabela de resultado
      Analises dos resultados
      Vetor1
      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
      Vetor2
      29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
      Vetor3
      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,29,28,27,26,25,24,23,22,21,20,19,18,17,16
      Vetor4
      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16,17,18,19,20,21,22,23,24,25,26,27,28,29
      Vetor5
      6,17,27,1,10,14,24,2,20,8,28,7,19,12,9,5,29,3,22,11,15,18,23,25,4,16,13,26,21
      tenho que testar esses vetores

    • @pgdinamica
      @pgdinamica  5 ปีที่แล้ว +5

      @@FabricioRAPGOSPEL A implementação do algoritmo inicia em 5:51. Se você está aprendendo a programar e tem dificuldades em como executar um programa, sugiro esta outra playlist: (Introdução ao Python por Projetos | Comece Aqui) th-cam.com/play/PL5TJqBvpXQv6AEfVymby32MinHdxZA-8J.html

  • @Eliviery
    @Eliviery ปีที่แล้ว

    O insertion_sort não ordenou corretamente, confira em 11:13, a diferença entre o intervalo de [34 ... 87] na sua lista.

    • @pgdinamica
      @pgdinamica  ปีที่แล้ว +1

      Ordenou sim: [...34, 39, 40, 42, 76, 87...]. O exemplo que deveria estar previamente ordenado é que possui uma inconsistência [...34, 76, 39...], mas o insertion_sort a corrigiu. Era esta a questão?

    • @Eliviery
      @Eliviery ปีที่แล้ว

      @@pgdinamica entendi. Valeu!

  • @Falaelvis
    @Falaelvis 3 ปีที่แล้ว

    Ola, boa tarde, eu tentei entrar em contato pelo Insta mas nao consegui. rsrs

    • @pgdinamica
      @pgdinamica  2 ปีที่แล้ว

      Envie um email para contato@programacaodinamica.com.br

  • @italokelmy7372
    @italokelmy7372 ปีที่แล้ว

    oxi, é igual ao select sort?

    • @pgdinamica
      @pgdinamica  ปีที่แล้ว +1

      Não mesmo. A ideia do selection sort é encontrar o menor (ou maior) valor no vetor inteiro e colocá-lo na primeira posição, e então repetir isso no restante do vetor.