MERGE SORT | Algoritmos #7

  Рет қаралды 43,180

Programação Dinâmica

Programação Dinâmica

5 жыл бұрын

Fala galera, nesse vídeo Hallison explica de maneira simples e didática o algoritmo de ordenação MERGE SORT e sua implementação em Python.
O merge sort é um algoritmo muito eficiente que adota a estratégia "dividir para conquistar". Seu funcionamento é baseado na ideia de quebrar a lista em várias pequenas listas, que são mais fáceis de ordenar, e depois juntá-las novamente já na ordem desejada.
*Instagram: @dinamicaprogramacao @kizzy_terra @ hallpaz
*Twitter: @pgdinamica @kizzyterra @hallpaz
*Código do vídeo: github.com/python-cafe/algori...
* Curta a Programação Dinâmica no facebook: programacaodinamica
* Confira o nosso Medium: / programacaodinamica
* Confira os artigos no Python Café: pythoncafe.com.br
#ordenação #algoritmos

Пікірлер: 202
@leiaute
@leiaute 4 жыл бұрын
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 KZbin e no Brasil.
@pgdinamica
@pgdinamica 4 жыл бұрын
Muuuuuitíssimo obrigado! 🦸🏾‍♂️🦸🏾‍♀️
@rafaelacordeiro6930
@rafaelacordeiro6930 4 жыл бұрын
Excelente! Super didático! Inscrita!
@linuxhopper6947
@linuxhopper6947 4 жыл бұрын
Vcs salvam demais, MUITO OBRIGADO!!
@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
@JoaoVitor-st9pg
@JoaoVitor-st9pg 4 жыл бұрын
Muito bom o vídeo, parabéns pela explicação
@viniciusgajo1884
@viniciusgajo1884 Жыл бұрын
Muito bom o vídeo, ótima explicação!
@giovannao.p.7591
@giovannao.p.7591 5 ай бұрын
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
@ataide2003
@ataide2003 3 жыл бұрын
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!
@estevaomendes2305
@estevaomendes2305 3 жыл бұрын
Ó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++
@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 👏👏👏
@jackienascimento_
@jackienascimento_ 3 жыл бұрын
As suas explicações me salvaram!
@pgdinamica
@pgdinamica 3 жыл бұрын
🙌🏾🙌🏾 bons estudos! :)
@Weignater
@Weignater Жыл бұрын
Muito bom mesmo! Obrigado!
@pgdinamica
@pgdinamica Жыл бұрын
De nada! 😉
@luiz8100
@luiz8100 Ай бұрын
Excelente aula parabéns professor, Deus abençoe ❤
@pgdinamica
@pgdinamica Ай бұрын
Amém 🙏🏾
@matheuscosta5330
@matheuscosta5330 3 жыл бұрын
Explicação como sempre, boa demais!!
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado!
@lucasacelino
@lucasacelino Жыл бұрын
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.
@jonastibulo9647
@jonastibulo9647 3 жыл бұрын
Seus vídeos são ótimos, parabéns!!!
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado!
@davijatoba6647
@davijatoba6647 2 жыл бұрын
Sensacional!!!!
@pgdinamica
@pgdinamica 2 жыл бұрын
Obrigado!
@GabrielSCCP1237
@GabrielSCCP1237 4 жыл бұрын
Excelente aula! Tinha que fazer a implementação em C e consegui mesmo a aula sendo em Python. Muito obrigado
@pgdinamica
@pgdinamica 4 жыл бұрын
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! ❤️
@robertmillerlinodossantos3935
@robertmillerlinodossantos3935 2 жыл бұрын
Sua série de vídeos de algoritmos tem me ajudado muito. Obrigado, @Programação Dinâmica
@pgdinamica
@pgdinamica 2 жыл бұрын
Que ótimo saber disso! Bons estudos!
@pauloricardomaltaleal3558
@pauloricardomaltaleal3558 2 жыл бұрын
Conteúdo de altíssima qualidade!!
@pgdinamica
@pgdinamica 2 жыл бұрын
Muito obrigado!
@drekki1709
@drekki1709 2 жыл бұрын
Parabéns pelo conteúdo! Vc é muito bom!
@pgdinamica
@pgdinamica 2 жыл бұрын
Muito obrigado!
@thiago_predolin
@thiago_predolin 4 жыл бұрын
Cara, excelente. Parabéns. Abraço.
@pgdinamica
@pgdinamica 4 жыл бұрын
Valeu! 😊
@alexandredesiqueiramelojun9976
@alexandredesiqueiramelojun9976 4 жыл бұрын
Esse canal me ajuda muito, valeu
@pgdinamica
@pgdinamica 4 жыл бұрын
🤩🤩
@pedemoleque8632
@pedemoleque8632 8 ай бұрын
você e seus vídeos foram e são exatamente o que eu estava precisando... muito obrigada!
@pgdinamica
@pgdinamica 8 ай бұрын
Obrigado pelas palavras!
@nandoscottimuzzi95
@nandoscottimuzzi95 10 ай бұрын
Boa noite Halisson!! obrigado pelo conteúdo. Já temos o video de analise de complexidade do MergeSort e QuickSort ?
@lucas404x
@lucas404x 4 жыл бұрын
Sensacional. Tava com dificuldade em entender esse algoritmo. Valeu, galera!
@pgdinamica
@pgdinamica 4 жыл бұрын
\o/
@rgranvilla
@rgranvilla 4 жыл бұрын
Obrigado Hallison! O seu material tem sido uma fonte fantástica para meu aprendizado.
@pgdinamica
@pgdinamica 4 жыл бұрын
Fico feliz em saber :)
@lifesourcecode
@lifesourcecode Жыл бұрын
Muito bom e didático. Muito obrigado pelo vídeo.
@pgdinamica
@pgdinamica Жыл бұрын
De nada!
@gabrielmachado2456
@gabrielmachado2456 3 жыл бұрын
Vídeo fantástico😍, muito bem explicado e me ajudou muito. Obrigado!
@pgdinamica
@pgdinamica 3 жыл бұрын
😊🙌🏾
@JOSECARLOS-wk8ru
@JOSECARLOS-wk8ru 3 жыл бұрын
Muito bom,, áudio,,,, explicação,,,,, excelente,, parabéns,,,,,,,,,
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado!
@pxgx0
@pxgx0 4 жыл бұрын
Sou seu fan
@h1rosajr
@h1rosajr Жыл бұрын
Quebra tudo! Bem bolado Professor.
@pgdinamica
@pgdinamica Жыл бұрын
Valeu!
@TheAndozio
@TheAndozio 4 жыл бұрын
Obrigado caro. ótimo vídeo.
@pgdinamica
@pgdinamica 4 жыл бұрын
Obrigado! 🙂
@PeacemakerTheGreat
@PeacemakerTheGreat 4 жыл бұрын
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
@engcre
@engcre Жыл бұрын
Valeu cara, me ajudou muito
@pgdinamica
@pgdinamica Жыл бұрын
Fico feliz em saber! Sucesso!
@haydendev
@haydendev 2 жыл бұрын
Obrigado prof
@pgdinamica
@pgdinamica 2 жыл бұрын
Valeu!
Жыл бұрын
Muito bem. Que aula sensacional!
@pgdinamica
@pgdinamica Жыл бұрын
Valeu, bons estudos!
@gomeshg_
@gomeshg_ Жыл бұрын
Bom demais!
@pgdinamica
@pgdinamica Жыл бұрын
Valeu!
@patrickcarneiro4646
@patrickcarneiro4646 2 жыл бұрын
Muito didático. Me inscrevi, muito obrigado!
@pgdinamica
@pgdinamica 2 жыл бұрын
Valeu, seja bem-vindo!
@lolinakashima3296
@lolinakashima3296 3 жыл бұрын
Gosto muito da sua metodologia. Nunca mude, por favor 😁
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado!
@mushroom0909ify
@mushroom0909ify 2 жыл бұрын
Show demais viu, didática maravilhosa.
@pgdinamica
@pgdinamica 2 жыл бұрын
Muito obrigado, bons estudos!
@lipo971
@lipo971 4 жыл бұрын
Muito bom o vídeo amigo. Me ajudou bastante.
@pgdinamica
@pgdinamica 4 жыл бұрын
Que ótimo! Fico feliz 😁
@user-lp8xn4wc2o
@user-lp8xn4wc2o Ай бұрын
Brabo, explicação incrível.
@pgdinamica
@pgdinamica Ай бұрын
Valeu!
@danrlady
@danrlady 4 жыл бұрын
Hallison, muito obrigado por essa aula! Finalmente consegui entender como implementar esse algoritmo. Parabéns pela didática!
@pgdinamica
@pgdinamica 4 жыл бұрын
Muito obrigado! Fico feliz que esteja ajudando!
@annapaula3070
@annapaula3070 8 ай бұрын
Muito didático ! Parabéns! 🙌
@pgdinamica
@pgdinamica 8 ай бұрын
Muito obrigado 😃
@Pedro_Nora
@Pedro_Nora 4 жыл бұрын
Sempre o lugar mais fácil de entender os assuntos que os outros possuem dificuldade para explicar!!!
@pgdinamica
@pgdinamica 4 жыл бұрын
👏🏾👏🏾 valeu! Ah, ficou ótimo o seu nome com esse selo verde hein 😊
@wesleylima7891
@wesleylima7891 Жыл бұрын
cara maravilhoso a aula simplificou na minha cabeça obrigado
@pgdinamica
@pgdinamica Жыл бұрын
De nada!
@guiwalk1990
@guiwalk1990 11 ай бұрын
Excelente vídeo
@pgdinamica
@pgdinamica 11 ай бұрын
Muito obrigado!
@eds6352
@eds6352 2 жыл бұрын
Excelentes vídeos.... parabéns
@pgdinamica
@pgdinamica 2 жыл бұрын
Valeu! Bons estudos 🙌🏾
@beasousa8497
@beasousa8497 3 жыл бұрын
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 3 жыл бұрын
Muito obrigado! 😊
@danielecavalcante4363
@danielecavalcante4363 4 жыл бұрын
muito bom!
@pgdinamica
@pgdinamica 4 жыл бұрын
Obrigado!
@VictorLellis
@VictorLellis 3 жыл бұрын
Muito boa a explicação, obrigado. Me ajudou bastante.
@pgdinamica
@pgdinamica 3 жыл бұрын
Valeu! 😊
@mateus18silva
@mateus18silva 4 жыл бұрын
Cara voce é muito bom sz
@pgdinamica
@pgdinamica 4 жыл бұрын
Muito obrigado! #tmj
@danilobucker
@danilobucker 3 жыл бұрын
Excelente aula.
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado!
@assisvt
@assisvt 9 ай бұрын
Cara tu é um professor incrível q didática!!!
@pgdinamica
@pgdinamica 8 ай бұрын
Obrigado!
@luizalmeida4884
@luizalmeida4884 4 жыл бұрын
Explicação fácil e concisa. Ja ganhou um assinante
@pgdinamica
@pgdinamica 4 жыл бұрын
Bem vindo! 🙂
@joaogondim1934
@joaogondim1934 2 жыл бұрын
excelente aula!
@pgdinamica
@pgdinamica 2 жыл бұрын
Muito obrigado!
@henriquecastro2032
@henriquecastro2032 3 жыл бұрын
Muito bom o conteúdo! Me ajudou muito com um trabalho em C !
@pgdinamica
@pgdinamica 3 жыл бұрын
Show, bons estudos!
@joaorobjr
@joaorobjr 3 жыл бұрын
Explicação clara e eficiente capaz de tornar um assunto complexo (no meu caso) em algo menos obscuro. Obrigado pelo excelente trabalho.
@pgdinamica
@pgdinamica 3 жыл бұрын
Valeu! 🙌🏾
@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.
@carlosfernando6739
@carlosfernando6739 2 жыл бұрын
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 2 жыл бұрын
Obrigado! Bons estudos ✌🏾
@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!
@Gustavo-fd4st
@Gustavo-fd4st 4 жыл бұрын
Conheci agora e to doido pra ser membro do canal 🤗
@pgdinamica
@pgdinamica 4 жыл бұрын
🥰🥰
@esdrasuchoa4860
@esdrasuchoa4860 3 жыл бұрын
obrigado suas explicações estao me ajudando em um trabalho pra faculdade,cê é 10
@pgdinamica
@pgdinamica 3 жыл бұрын
Valeu 🙌🏾
@adrielvolzzisales2851
@adrielvolzzisales2851 Жыл бұрын
Tu e fera
@pgdinamica
@pgdinamica Жыл бұрын
Obrigado!
@luizaraujo6747
@luizaraujo6747 8 ай бұрын
Aula é top de mais to gostando mais que minhas aulas faculdade.... didática é incrível
@pgdinamica
@pgdinamica 8 ай бұрын
Obrigado! Fico feliz que esteja gostando :)
@gabrielapaulinideutner3180
@gabrielapaulinideutner3180 Ай бұрын
Aula incrível!
@pgdinamica
@pgdinamica Ай бұрын
Muito obrigado!
@gabrielapaulinideutner3180
@gabrielapaulinideutner3180 Ай бұрын
@@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]
@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 😆
@PedroHenrique-jj6kn
@PedroHenrique-jj6kn 4 ай бұрын
genioooo
@pgdinamica
@pgdinamica 4 ай бұрын
Quem dera…
@cadu7698
@cadu7698 3 жыл бұрын
Ajudou d+, estava num sufoco aqui.
@pgdinamica
@pgdinamica 3 жыл бұрын
Sucesso!
@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.
@pgdinamica
@pgdinamica 2 жыл бұрын
😁🙌🏾
@Klysman08
@Klysman08 5 жыл бұрын
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 жыл бұрын
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
@pedro.balbino
@pedro.balbino 3 жыл бұрын
Professor muito bom!
@carlosfrederico7821
@carlosfrederico7821 3 жыл бұрын
Pedro carai kkkkkkkkkkkkkkkkkkkkk
@pedro.balbino
@pedro.balbino 3 жыл бұрын
@@carlosfrederico7821 😂😂😂
@pgdinamica
@pgdinamica 3 жыл бұрын
Obrigado 😃, bons estudos!
@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
@Gustavo-fd4st
@Gustavo-fd4st 4 жыл бұрын
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
@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.
@FelipeSantos-rz1ro
@FelipeSantos-rz1ro 4 жыл бұрын
Vc pode fazer um vídeo sobre o quicksort?
@pgdinamica
@pgdinamica 4 жыл бұрын
Sim! Quinta ou sexta sai ;)
@pgdinamica
@pgdinamica 4 жыл бұрын
@Felipe Santos, ficou pronto agora (quase meia-noite 😱)! Por estar tarde, agendaremos para amanhã, fique ligado ;)
@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 жыл бұрын
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!!!
@snuxfps8641
@snuxfps8641 6 ай бұрын
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 6 ай бұрын
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.
@snuxfps8641
@snuxfps8641 6 ай бұрын
@@pgdinamica Entendi, obrigado
@carlinhoshf9
@carlinhoshf9 4 жыл бұрын
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 4 жыл бұрын
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.
@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?
@luisarcanjo1657
@luisarcanjo1657 Жыл бұрын
Merge sort e buble sort da pra usar no java?
@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.
@PedroLucas-xu1gi
@PedroLucas-xu1gi Жыл бұрын
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
@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: kzbin.info/www/bejne/h3SboJyHo9GMpdU
@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 Жыл бұрын
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
@petrusdemelo8754
@petrusdemelo8754 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 жыл бұрын
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".
@petrusdemelo8754
@petrusdemelo8754 4 жыл бұрын
@@pgdinamica excelente! Obrigado. Eu sou de javascript e java, dai não estou acostumado com esses detalhes rs
@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)
@lucianoleitte9078
@lucianoleitte9078 4 жыл бұрын
Se eu implementar o merge sort em Python, em C e em Java, o algoritmo tem o mesmo desempenho?
@pgdinamica
@pgdinamica 4 жыл бұрын
Fala, Luciano! A forma como o tempo de execução varia com o tamanho da entrada é a mesma, pois depende da complexidade. Contudo, o tempo de execução vai mudar. Para uma mesma entrada, em um mesmo computador, em C será mais rápido, mas será mais fácil distinguir isso com entradas maiores (milhões de dados ou mais).
@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.
@assisvt
@assisvt 9 ай бұрын
A lógica do Merge Sort é a mesma em qualquer linguagem? Python, java etc?
@pgdinamica
@pgdinamica 8 ай бұрын
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.
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
@hugoleonardo3758
@hugoleonardo3758 4 жыл бұрын
fiz exemplo agora, porem, nada me retorna
@israelsilvaa
@israelsilvaa 2 жыл бұрын
vou passar em estrutura de dados 1, obrigado kkkkkk
@pgdinamica
@pgdinamica 2 жыл бұрын
Bons estudos!
@TiagoSantos-ed6zk
@TiagoSantos-ed6zk 3 жыл бұрын
Eu fiz exatamente igual ao código do vídeo, mas quando coloco para ordenar só retorna None. O que será?
@pgdinamica
@pgdinamica 3 жыл бұрын
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 3 жыл бұрын
@@pgdinamica Ah, tá! Agora entendi. Muito obrigado. Parabéns pelo canal. Os conteúdos são incríveis. 🥰
@pgdinamica
@pgdinamica 3 жыл бұрын
🙌🏾
@maisss4513
@maisss4513 2 жыл бұрын
Onde encontro o código em C?
@pgdinamica
@pgdinamica 2 жыл бұрын
O código é *bem fácil* de encontrar na internet, mas você vai aprender muito mais se implementar por conta própria.
@JoaoVitor-st9pg
@JoaoVitor-st9pg 4 жыл бұрын
Alguém conseguiu fazer em linguagem C?
@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?
@rafaelmendescosta2812
@rafaelmendescosta2812 4 жыл бұрын
Oi gente, eu implementei em C, mas nao esta ordenando: void merge(int vetor[TAM], int inicio, int meio, int fim){ int n1 = meio - inicio + 1; int n2 = fim - meio; int vetEsq[n1]; int vetDir[n2]; for (int i = 0; i < n1; i++){ vetEsq[i] = vetor[inicio + i]; } for(int j = 0; j < n2; j++){ vetDir[j] = vetor[meio + j]; } int topoEsq = 0, topoDir = 0, k; for (k = inicio; k < fim; k++){ if(topoEsq >= n1){ vetor[k] = vetDir[topoDir]; topoDir++; }else if(topoDir >= n2){ vetor[k] = vetEsq[topoEsq]; topoEsq++; }else if(vetEsq[topoEsq] < vetDir[topoDir]){ vetor[k] = vetEsq[topoEsq]; topoEsq++; }else{ vetor[k] = vetDir[topoDir]; topoDir++; } } } void mergeSort(int vetor[TAM], int inicio, int fim){ if(inicio > fim){ int meio = (int)(fim + inicio) / 2; mergeSort(vetor, inicio, meio); mergeSort(vetor, meio + 1, fim); merge(vetor, inicio, meio, fim); } }
@renansilva15_
@renansilva15_ 3 жыл бұрын
Na função 'mergeSort' a condição 'inicio>fim' está errada.
QUICKSORT | Algoritmos #8
19:29
Programação Dinâmica
Рет қаралды 46 М.
Merge Sort Algorithm in Java - Full Tutorial with Source
23:02
Coding with John
Рет қаралды 173 М.
БАБУШКИН КОМПОТ В СОЛО
00:23
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 18 МЛН
Mom's Unique Approach to Teaching Kids Hygiene #shorts
00:16
Fabiosa Stories
Рет қаралды 35 МЛН
路飞太过分了,自己游泳。#海贼王#路飞
00:28
路飞与唐舞桐
Рет қаралды 35 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:40
CRAZY GREAPA
Рет қаралды 26 МЛН
Como implementar BUSCA BINÁRIA? *Você deveria aprender isso!* | Algoritmos #10
21:01
Complexidade de algoritmo - Entenda O(log(n)) finalmente
16:21
Kevin Beltrão
Рет қаралды 13 М.
Why Is Merge Sort O(n * log(n))? The Really Really Long Answer.
36:50
Back To Back SWE
Рет қаралды 113 М.
2 Python Developers VS $1000
15:04
PolyMars
Рет қаралды 1,8 МЛН
Learn Merge Sort in 13 minutes 🔪
13:45
Bro Code
Рет қаралды 276 М.
ALGORITMOS DE ORDENAÇÃO
12:04
ENSICO
Рет қаралды 18 М.
Notação do O Grande - Complexidade de Algoritmos II
25:08
Programação Dinâmica
Рет қаралды 44 М.
Premature Optimization
12:39
CodeAesthetic
Рет қаралды 777 М.
БАБУШКИН КОМПОТ В СОЛО
00:23
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 18 МЛН