MERGE SORT | Algoritmos #7

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 พ.ย. 2024

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

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

    Professor, muito bom o seu vídeo, mas muito bom mesmo.
    Muito bem explicado, a qualidade do vídeo em si é boa e do áudio também.
    Cara, você está fazendo um trabalho heróico no TH-cam e no Brasil.

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

      Muuuuuitíssimo obrigado! 🦸🏾‍♂️🦸🏾‍♀️

  • @giovannao.p.7591
    @giovannao.p.7591 9 หลายเดือนก่อน +1

    a analogia das cartas me ajudou muito a visualizar a lógica do algoritmo! muito obrigada por disponibilizar conteúdo de qualidade sobre programação em pt-br aqui no yt

  • @Pedro_Nora
    @Pedro_Nora 23 วันที่ผ่านมา

    Revendo após alguns anos... conteúdo sempre muito válido.

    • @pgdinamica
      @pgdinamica  23 วันที่ผ่านมา

      Valeu, Pedro!

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

    Opa mestre, eu fui aluno do infnet EAD e se tivesse tido aula com você, nesse nivel de explicação provavelmente não teria abandonado a instituição! Gostaria de dizer que os vídeos estão excelentes e você explica de forma maravilhosa. Seguindo, dando like e compartilhando já! Parabéns!!!

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

      Obrigado pelo apoio, Anderson! Bons estudos!

  • @GabrielSCCP1237
    @GabrielSCCP1237 4 ปีที่แล้ว +13

    Excelente aula! Tinha que fazer a implementação em C e consegui mesmo a aula sendo em Python. Muito obrigado

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

      Parabéns! Sinal de que entendeu mesmo a essência do algoritmo. A ideia, o conceito, tem que ser independente de linguagem :) Quando eu fiz o curso na faculdade, também foi em C.

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

      Estou fazendo exatamente a mesma coisa e tá dando super certo! Canal excelente! ❤️

  • @Laura-bd2we
    @Laura-bd2we 3 หลายเดือนก่อน

    Obrigada pela aulas! eu não estava conseguindo entender mesmo lendo os slides do professor e você me ajudou ❤ tbm adoro ver pessoas pretas na área (tbm sou preta)

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

      ✊🏾 🙌🏾 é nós por nós!

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

    Ótimo vídeo, muito bem explicado. A ideia do algoritmo é intuitiva vendo de uma perspectiva de árvore, mas a recursão sempre me da um nó na cabeça, kkk. Quero tentar implementar isso agora em C/C++

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

    Sempre o lugar mais fácil de entender os assuntos que os outros possuem dificuldade para explicar!!!

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

      👏🏾👏🏾 valeu! Ah, ficou ótimo o seu nome com esse selo verde hein 😊

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

    cara maravilhoso a aula simplificou na minha cabeça obrigado

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

    Aula é top de mais to gostando mais que minhas aulas faculdade.... didática é incrível

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

      Obrigado! Fico feliz que esteja gostando :)

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

    Cara tu é um professor incrível q didática!!!

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

    Muito bom e didático. Muito obrigado pelo vídeo.

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

    Excelente aula parabéns professor, Deus abençoe ❤

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

      Amém 🙏🏾

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

    Sua série de vídeos de algoritmos tem me ajudado muito. Obrigado, @Programação Dinâmica

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

      Que ótimo saber disso! Bons estudos!

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

    Muito didático. Me inscrevi, muito obrigado!

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

      Valeu, seja bem-vindo!

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

    Hallison, muito obrigado por essa aula! Finalmente consegui entender como implementar esse algoritmo.
    Parabéns pela didática!

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

      Muito obrigado! Fico feliz que esteja ajudando!

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

    Cara, conteúdo extremamente bem entregue, parabéns. Não vi nenhum outro vídeo no yt, nem em outras línguas, que explique tão bem a implementação, valeu!

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

      Fico feliz com o reconhecimento :D

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

    Bom demais!

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

    Brabo, explicação incrível.

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

      Valeu!

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

    você e seus vídeos foram e são exatamente o que eu estava precisando... muito obrigada!

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

      Obrigado pelas palavras!

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

    Parabéns! Achei que não iria conseguir encontrar alguém que conseguisse explicar esse algoritmo de forma simples e com uma boa didática.

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

      Obrigado! Bons estudos ✌🏾

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

    Muito didático ! Parabéns! 🙌

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

      Muito obrigado 😃

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

    Obrigado prof

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

    Explicação clara e eficiente capaz de tornar um assunto complexo (no meu caso) em algo menos obscuro. Obrigado pelo excelente trabalho.

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

    Obrigado Hallison! O seu material tem sido uma fonte fantástica para meu aprendizado.

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

      Fico feliz em saber :)

  •  ปีที่แล้ว

    Muito bem. Que aula sensacional!

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

      Valeu, bons estudos!

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

    Explicação fácil e concisa. Ja ganhou um assinante

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

      Bem vindo! 🙂

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

    Estou começando a entender este algoritmo, muito obrigado. Sou auto-didata e estou tentando aprender esse algoritmos.

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

      Show, Lucas, bom saber! Bons estudos!

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

    Muito bom mesmo! Obrigado!

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

    excelente aula!

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

    Muito bom o vídeo, ótima explicação!

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

    obrigado suas explicações estao me ajudando em um trabalho pra faculdade,cê é 10

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

    Conteúdo excelente. Sempre aqui aprendendo algoritmos. Halisson, você poderia me explicar a nuance do pior e melhor caso do mergesort, além da análise da complexidade, por exemplo: O porquê do melhor caso e o porquê do pior caso? O que difere entre melhor caso e o pior caso. Questões de comparações, chamadas recursivas e dentre outras rotinas.

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

    Boa noite Halisson!!
    obrigado pelo conteúdo. Já temos o video de analise de complexidade do MergeSort e QuickSort ?

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

    Quebra tudo! Bem bolado Professor.

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

    Sensacional!!!!

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

    Excelentes vídeos.... parabéns

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

      Valeu! Bons estudos 🙌🏾

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

    Muito bom o vídeo. Explicação bem top .agora é só eu passar para java . Procurei a internet toda finalmente achei um vídeo que dá para entender bem .ótimo trabalho 👏👏👏

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

    Gosto muito da sua metodologia. Nunca mude, por favor 😁

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

    Muito boa a explicação, obrigado. Me ajudou bastante.

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

    cara muito bom o seu vídeo sua explicação é excelente, tornou um assunto tão difícil em algo extremamente simples, parabéns, amei aula

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

      Muito obrigado! 😊

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

    Nossa, explicou de uma maneira mais simples que o meu professor. Eu não consegui entender muito bem o código porque não estou acostumado com Python; utilizamos Java na faculdade. Mas a explicação do algoritmo ficou bem simples mesmo.

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

    Valeu cara, me ajudou muito

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

      Fico feliz em saber! Sucesso!

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

    Excelente vídeo

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

    Show demais viu, didática maravilhosa.

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

      Muito obrigado, bons estudos!

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

    Preciso desenvolver uma ordenação aqui hoje. Passei pra relembrar que ja nao fazia mais ideia de como implementar. KKKKKK bem explicado parabéns.

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

    Aula incrível!

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

      Muito obrigado!

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

      @@pgdinamica eu fiz um passo a passo para debugar o algoritmo no Jupyter e conseguir entender melhor a lógica, vou compartilhar aqui caso ajude alguém haha
      def mergesort(lista, inicio=0, fim=None):
      if fim is None:
      fim = len(lista)
      if (fim - inicio > 1):
      meio = (fim + inicio) // 2
      print(f"Dividindo: {lista[inicio:fim]} em {lista[inicio:meio]} e {lista[meio:fim]}")
      mergesort(lista, inicio, meio)
      mergesort(lista, meio, fim)
      merge(lista, inicio, meio, fim)
      def merge(lista, inicio, meio, fim):
      left = lista[inicio:meio]
      right = lista[meio:fim]
      top_left, top_right = 0, 0
      print(f"Merging: {left} e {right}")
      for k in range(inicio, fim):
      if top_left >= len(left):
      lista[k] = right[top_right]
      top_right = top_right + 1
      elif top_right >= len(right):
      lista[k] = left[top_left]
      top_left = top_left + 1
      elif left[top_left] < right[top_right]:
      lista[k] = left[top_left]
      top_left = top_left + 1
      else:
      lista[k] = right[top_right]
      top_right = top_right + 1
      print(f"Resultado do merge: {lista[inicio:fim]}")
      # Lista a ser ordenada
      lista_ = [4, 7, 2, 6, 4, 1, 8, 3]
      # Imprimindo a lista antes da ordenação
      print("Lista antes da ordenação:", lista_)
      # Chamando a função mergesort
      mergesort(lista_)
      # Imprimindo a lista após a ordenação
      print("Lista após a ordenação:", lista_)
      A saída no console do Jupyter ficou assim:
      Lista antes da ordenação: [4, 7, 2, 6, 4, 1, 8, 3]
      Dividindo: [4, 7, 2, 6, 4, 1, 8, 3] em [4, 7, 2, 6] e [4, 1, 8, 3]
      Dividindo: [4, 7, 2, 6] em [4, 7] e [2, 6]
      Dividindo: [4, 7] em [4] e [7]
      Merging: [4] e [7]
      Resultado do merge: [4, 7]
      Dividindo: [2, 6] em [2] e [6]
      Merging: [2] e [6]
      Resultado do merge: [2, 6]
      Merging: [4, 7] e [2, 6]
      Resultado do merge: [2, 4, 6, 7]
      Dividindo: [4, 1, 8, 3] em [4, 1] e [8, 3]
      Dividindo: [4, 1] em [4] e [1]
      Merging: [4] e [1]
      Resultado do merge: [1, 4]
      Dividindo: [8, 3] em [8] e [3]
      Merging: [8] e [3]
      Resultado do merge: [3, 8]
      Merging: [1, 4] e [3, 8]
      Resultado do merge: [1, 3, 4, 8]
      Merging: [2, 4, 6, 7] e [1, 3, 4, 8]
      Resultado do merge: [1, 2, 3, 4, 4, 6, 7, 8]
      Lista após a ordenação: [1, 2, 3, 4, 4, 6, 7, 8]

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

    Obrigado caro. ótimo vídeo.

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

    Nem começou o vídeo e já vou "sapecando" like porque sempre vem coisa boa nos vídeos desse casal gente boa e competentíssimo 👏🏻👏🏻👏🏻 Parabéns pelo canal que a cada dia vem ficando mais robusto com conteúdos de grande valor 🙏🏻🙏🏻🙏🏻 #gratidao #sucesso

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

    Excelente aula.

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

    Muito bom o conteúdo! Me ajudou muito com um trabalho em C !

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

      Show, bons estudos!

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

    Esse canal me ajuda muito, valeu

  • @JOSECARLOS-wk8ru
    @JOSECARLOS-wk8ru 4 ปีที่แล้ว

    Muito bom,, áudio,,,, explicação,,,,, excelente,, parabéns,,,,,,,,,

  • @JoaoVitor-st9pg
    @JoaoVitor-st9pg 4 ปีที่แล้ว

    Muito bom o vídeo, parabéns pela explicação

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

    Vcs salvam demais, MUITO OBRIGADO!!

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

    Qual é o melhor algoritmo de ordenação na opinião de vocês? E por quê?
    O vídeo ficou show de bola!

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

      Tá fazendo trabalho da faculdade? 👀

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

      @@pgdinamica Que nada, hahaha... só pra saber a opinião de vocês mesmo.
      Vi alguns vídeos na internet e não consigo chegar em uma conclusão, estou entre o quick sort e o merge sort.

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

    Sensacional. Tava com dificuldade em entender esse algoritmo. Valeu, galera!

  • @pedro.balbino
    @pedro.balbino 3 ปีที่แล้ว

    Professor muito bom!

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

      Pedro carai kkkkkkkkkkkkkkkkkkkkk

    • @pedro.balbino
      @pedro.balbino 3 ปีที่แล้ว

      @@carlosfrederico7821 😂😂😂

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

      Obrigado 😃, bons estudos!

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

    Vídeo fantástico😍, muito bem explicado e me ajudou muito. Obrigado!

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

    Parabéns pelo conteúdo! Vc é muito bom!

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

    Conteúdo de altíssima qualidade!!

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

    Explicação como sempre, boa demais!!

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

    Como que você tem a coragem de falar uma coisa dessa???????
    Cheguei aqui no seu canal PQ precisava entender o merge sort e me deparo com esse vídeo seu muito bem explicado.
    Aí quando vou olhar o canal para me inscrever, vejo que já tem 200 mil inscritos.
    A pergunta inicial foi só para chamar a atenção. Você está de parabéns e merece cada curtida nos seus vídeos!!

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

      Obrigado, seja bem-vindo!

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

    Cara, excelente. Parabéns. Abraço.

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

    Seus vídeos são ótimos, parabéns!!!

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

    Tu e fera

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

    Muito bom o vídeo amigo. Me ajudou bastante.

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

      Que ótimo! Fico feliz 😁

  • @raphael.portela
    @raphael.portela ปีที่แล้ว

    boa noite Hall, mano , o cormen apresenta o merge sort pegando o tamanho dos dois arrays e tambem ele usa mais parametros, to meio confuso, ta dificil de pegar esse, eu to tentando entender no livro pra depois destrinchar esse video, o que voce acha q devo fazer?

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

    Ajudou d+, estava num sufoco aqui.

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

    Cara voce é muito bom sz

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

      Muito obrigado! #tmj

  • @FelipeSantos-rz1ro
    @FelipeSantos-rz1ro 5 ปีที่แล้ว +2

    Vc pode fazer um vídeo sobre o quicksort?

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

      Sim! Quinta ou sexta sai ;)

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

      @Felipe Santos, ficou pronto agora (quase meia-noite 😱)! Por estar tarde, agendaremos para amanhã, fique ligado ;)

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

    muito bom!

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

    Excelente! Super didático! Inscrita!

  • @Gustavo-fd4st
    @Gustavo-fd4st 4 ปีที่แล้ว

    Conheci agora e to doido pra ser membro do canal 🤗

  • @Gustavo-fd4st
    @Gustavo-fd4st 4 ปีที่แล้ว +1

    Olá. Conheci o canal agora por esse vídeo e vou maratonar os videos. Quero ser educador nessa area. Estou estudando programação durante a pandemia pq eu iria iniciar a faculdade de S. I. no 3 período de 2020. então tô pegando as coisas antecipadamente, conheço até vetores/matrizes/strings porem somente em c. Poderia recomendar livros de linguagem C?

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

      Olá, seja bem vindo! Dá uma olhada em “Linguagem C” de Luís Damas

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

    Boa tarde, tudo bem? Sou fã do seu canal, poderia me dizer se caso tenha uma ocorrência, que no meu caso seria de um array, cujo tamanho seja impar o algoritmo proposto no vídeo não iria funcionar?

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

      Não sei se entendi a pergunta. Se a pergunta for:
      "Este algoritmo funciona quando o tamanho do array é ímpar?"
      - Sim.
      "Este algoritmo funciona quando há um número ímpar de ocorrências de quaisquer que sejam os elementos no array?"
      - Sim.
      Dada uma estrutura de alocação de memória sequencial (array, lista...) com elementos cuja ordem entre eles é bem definida (é sempre possível saber quem é maior/menor que quem), este algoritmo ordena os elementos da estrutura.

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

      @@pgdinamica Entendi, obrigado

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

    Fala, mestre!
    Bom demais suas aulas, acompanho o canal já tem bastante tempo, gosto muito da maneira como você expõe o conhecimento sobre esses assuntos.
    Queria saber se a playlist Estruturas de Dados e Algoritmos está ordenada, estou meio confuso para seguir os vídeos.
    Abraços!

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

      Oi, Klysman Rezende, muito obrigado!
      Obrigado por chamar a atenção quanto a essa playlist. Reorganizamos ela apenas com os vídeos de "Estruturas de Dados" (tudo ordenado!). Há uma outra playlist chamada 'Projeto e Análise de Algoritmos" que contém os vídeos específicos sobre algoritmos (até o momento abordamos apenas ordenação).
      []s

  • @PedroHenrique-jj6kn
    @PedroHenrique-jj6kn 8 หลายเดือนก่อน

    genioooo

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

      Quem dera…

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

    Vídeo muito bom e muito bem explicado! Preciso só de ajuda com a complexidade de tempo desse algoritmo de ordenação, conseguiria fazer uma breve explicação dando como exemplo a lista de 8 números do início do vídeo? Obrigado :D

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

      complexidade do merge sort eh de nlogn, na linha i de recursão temq unir 2^i vetores ordenados de tamanho n/2^i, dai qnd dividir o vetor no meio c m sendo a quantidade de linhas, fica n/2^m=1, isolando o m da logan em cada linha, mas você tem que fazer isso n vezes, logo, a complexidade da nlogn

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

    Merge sort e buble sort da pra usar no java?

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

    As suas explicações me salvaram!

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

      🙌🏾🙌🏾 bons estudos! :)

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

    8:30 , kk justamente o que eu tava pensando.

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

      Hahahaha, você vai ver que esse tipo de ideia se repete em muitas outras situações na computação, talvez quem pensou no Mergesort não tenha sido o primeiro 😆

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

    Hallison, e nos casos em que a lista tivesse tamanho multiplo de 3? Por exemplo, 6. A lista seria dividida em duas de 3, mas como seria a divisão de cada uma dessas listas separadas de tamanho 3, em listas de tamanho 1, para em seguida, comparar cada uma dessas listas de tamanho 1 e construir novamente uma de tamanho 3?

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

      Fala, Carlos! Nesse caso, um lado fica com apenas 1 elemento e para no próximo passo. O outro lado segue com 2 elementos e faz mais uma subdivisão. Esses 2 serão unidos de forma ordenada primeiro e, depois aquele sozinho se unirá à eles de forma ordenada.

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

    Assistido✔️
    Hallison por ele ser mais eficaz a complexidade dele é O(n)? Ele passa pelos elementos da lista várias vezes mas em quantidade menor e faz comparações, mas essas varias vezes que ele calcula as comparações não fariam a complexidade dele ser maior? Estou partindo do princípio que ele só vai fazer um loop for em uma condição (já que tem vários if elif else) então seria n vezes e não n².

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

      A complexidade do Merge Sorte é O(n*log(n)). Você pode pensar no logaritmo na base 2. Pra cada uma das n posições, você vê no máximo log(n) operações, pois está dividindo por 2 sucessivamente.

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

    Sou seu fan

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

    Como eu faria o merge retornando um int com o numero de comparações na linguagem C? to quebrando a cabeça nisso tem 1 dia já...

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

      Você precisa de uma variável que armazena o número de comparações realizadas durante o merge. Como o procedimento é recursivo, você pode incrementar os valores com uma estratégia parecida com a que usamos no cálculo da altura de uma árvore binária: th-cam.com/video/QC8oiQnlYos/w-d-xo.html

  • @Julio-nf4nz
    @Julio-nf4nz ปีที่แล้ว

    Professor eu tenho uma duvida. Eu estou tentando implementar o algoritmo do Tim Sort e consegui, porem quando eu ponho um Array de 10.000 números aleatórios dá um erro na parte do Merge, até agora não sei como resolver.
    import random
    def insertion_sort(array, left=0, right=None):
    if right is None:
    right = len(array) - 1
    for i in range(left + 1, right + 1):
    key_item = array[i]
    j = i - 1
    while j >= left and array[j] > key_item:
    array[j + 1] = array[j]
    j -= 1
    array[j + 1] = key_item
    return array
    def merge(left, right):
    if not left:
    return right
    if not right:
    return left
    if left[0] < right[0]:
    return [left[0]] + merge(left[1:], right)
    return [right[0]] + merge(left, right[1:])
    def tim_sort(array):
    min_run = 32
    n = len(array)
    for i in range(0, n, min_run):
    insertion_sort(array, i, min((i + min_run - 1), n - 1))
    size = min_run
    while size < n:
    for start in range(0, n, size * 2):
    midpoint = start + size - 1
    end = min((start + size * 2 - 1), (n-1))
    merged_array = merge(
    left=array[start:midpoint + 1],
    right=array[midpoint + 1:end + 1]
    )
    array[start:start + len(merged_array)] = merged_array
    size *= 2
    return array
    # Gerar os numeros para um array
    arr = [random.randint(0, 10000) for i in range(10000)]
    # Imprimir o array original
    print("Array original:")
    print(arr)
    # Ordenar o array usando o algoritmo Tim Sort
    arr = tim_sort(arr)
    # Imprimir o array ordenado
    print("
    Array ordenado:")
    print(arr)

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

    Fala Hallison, tudo bom?
    Cara, eu tenho uma dúvida. Nesta segunda chamada recursiva do mergesort não deveríamos passar o parametro "meio" como sendo o valor "meio + 1" não? Já que o meio termina o mergesort anterior, devo começar do primeiro a seguir?

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

      Em Python, os intervalos (range) são fechados no início (inclui) e abertos no final (exclui). Em: "for k in range(inicio, fim):", k vai até fim-1.
      Na primeira chamada, "meio" entra como "fim", então vamos até "meio-1". Na segunda, entra como "incio", então começamos de "meio".

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

      @@pgdinamica excelente! Obrigado. Eu sou de javascript e java, dai não estou acostumado com esses detalhes rs

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

    Oii professor tudo bem?Nunca é tarde demais para aprender kkkkk, a variável k seria o que exatamente?

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

      Pelo oq eu entendi ela serve para armazenar a lista original temporariamente

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

      @@CosmosCSGO ataaa, muito obrigada

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

    Como seria o merge pra ordenar um vetor de strings?

  • @raphael.portela
    @raphael.portela ปีที่แล้ว

    to tentando escrever esse algoritmo em C, mas to preso na parte de dividir o array no meio por conta dos ponteiros, ja que pode ser numero par ou impar a quantidade de elementos, é bem mais demorado mas acho que eu abstraio melhor

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

      Uma opção é dividir por 2 e fazer casting do resultado pra int. Desta forma, você sempre vai arredondar pra baixo.

    • @raphael.portela
      @raphael.portela ปีที่แล้ว

      @@pgdinamica obrigado Hall, voce usou o cormen na sua graduação? acha um bom livro pra pessoa seguir por conta propria como eu to fazendo? to um pouco devagar mas sinto que to aprendendo de fato

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

    Hallison, parabéns pelo video.
    Tenho uma duvida fora do contexto do video. Para data science, tu achar melhor Python ou R?

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

      Fala, @João Victor Assis, tudo bem?
      A sua dúvida é bem frequente e tá totalmente no contexto do canal, apesar de não ser o assunto deste vídeo, hehe. Resolvemos escrever um artigo para respondê-la dando um pouco mais de detalhes que não caberia aqui. Confira no link: medium.com/programacaodinamica/python-ou-r-para-data-science-221aa5637122

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

      @@pgdinamica Cara, muito obrigado. Virei mais fã ainda, só força!!!

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

    A lógica do Merge Sort é a mesma em qualquer linguagem? Python, java etc?

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

      Sim. É a lógica que caracteriza o algoritmo, não o código. Merge Sort foi inventado muito antes de Java, Python, JavaScript e várias outras linguagens que são populares hoje em dia.

  • @PedroLucas-xu1gi
    @PedroLucas-xu1gi 2 ปีที่แล้ว +1

    no meu codigo a lista é retornada vazia

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

    oi Professor, uma duvida: porque não pode usar len(lista) como parametro no minuto 18:05 ?

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

      Pq se o fizesse, a função iria considerar a variável lista de escopo local (dentro da própria função), ou seja, a variável lista que está como parâmetro, e não a lista que é passada em si

  • @TiagoSantos-ed6zk
    @TiagoSantos-ed6zk 4 ปีที่แล้ว

    Eu fiz exatamente igual ao código do vídeo, mas quando coloco para ordenar só retorna None. O que será?

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

      Oi, amigo, repara que a função não tem "return", ela ordena a lista passada como entrada. Após chamar a função, exiba a lista e verifique se ela está ordenada 🤙🏾

    • @TiagoSantos-ed6zk
      @TiagoSantos-ed6zk 4 ปีที่แล้ว

      @@pgdinamica Ah, tá! Agora entendi. Muito obrigado. Parabéns pelo canal. Os conteúdos são incríveis. 🥰

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

      🙌🏾

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

    me veio um pensamento na cabeça, se houver uma lista muito grande para o merge sort dividir em listas de 1 elemento em cada variavel, pode ocorrer o erro de estouro de pilha?

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

      Sim, muito bem observado! Neste caso, seria melhor usar um algoritmo com versão iterativa ou, ainda, fazer uma ordenação “off-line” usando a memória secundária.

  •  4 ปีที่แล้ว

    Fui assistindo e copiando o código, mas aí quando chegou na parte das listas e do import eu me perdi, pois estou fazendo no Google Colab. Isso está em outro vídeo?

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

      Tá distribuído em vários vídeos, mas o código completo fica aqui: github.com/python-cafe/algorithms/tree/master/sorting

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

    Olá vc teria essa implementação em C?

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

      Olá, qual dificuldade você está enfrentando para implementar em C a partir da explicação? Você entendeu a ideia do algoritmo? Se você só copiar o código, não vai aprender.

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

      @@pgdinamica olá entendi a idéia sim , mas não sei python, é um pouco diferente, e fiquei com muita dificuldade em implementar em C, seria ótima se houvesse uma explicação passo a passo como esse do video, será que ainda vai rolar?

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

    Onde encontro o código em C?

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

      O código é *bem fácil* de encontrar na internet, mas você vai aprender muito mais se implementar por conta própria.