Como implementar BUSCA BINÁRIA? *Você deveria aprender isso!* | Algoritmos #10

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

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

  • @J.Vinicius-o7b
    @J.Vinicius-o7b 11 หลายเดือนก่อน +11

    Msm 4 anos depois, os vídeos continuam maravilhosos

  • @relvascaue4869
    @relvascaue4869 4 ปีที่แล้ว +41

    O Felipe Deschamps indicou aqui... É muito bom mesmo 🏆
    Parabéns

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

      Obrigado! Seja bem vindo! 😁

  • @BubbleSorte
    @BubbleSorte 11 หลายเดือนก่อน +2

    Tô estudando pelo livro do ratinho, não havia entendido o teste do

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

    Que aula incrível, soube medir na quantidade certa a teoria e a prática, passando o conhecimento de forma ágil, gostei bastante!

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

      Fico feliz que tenha gostado 😁

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

    Like dado com gosto!
    Obrigado Hallison.

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

    Obrigado pelo vídeo, Hallison. Sou estudante de Ciência da Computação da Universidade Federal do Pará e seus vídeos me ajudam muito nas matérias de algoritmos em geral.

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

      Que ótimo, Samuel! Fico feliz 🙂

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

    Mt melhor que meu professor boludo de programação imperativa

  • @Lucassilva-cp4eg
    @Lucassilva-cp4eg 2 ปีที่แล้ว +1

    Melhor canal para assuntos imprescindíveis como algorítimos e estrutura de dados. Vocês são FODAS!

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

    Primeira vez que consigo entender esse negócio de busca binária. Muito bom o vídeo! Deixei meu like.

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

      Que ótimo, bons estudos!

  • @EduardoAntonio-iz1lo
    @EduardoAntonio-iz1lo ปีที่แล้ว

    Sua didática é impressionante, até eu consegui entender, parabéns !

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

      Muito obrigado! Fico feliz que tenha ajudado! Bons estudos!

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

    Excelente didática tanto teoria e prática. Coloquei na pesquisa e foi o primeiro vídeo recomendado. Muito obrigado Halison .
    Obs: Estou lendo "Entendendo Algoritmos" e no início aplica o conceito da pesquisa/busca binária.

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

      Valeu, Jonathan! Bons estudos 🙌🏾

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

    Parabéns, video excelente!

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

      Muito obrigado 😊

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

    Caraca mano, o MD Chefe dando aula de programação! Hahaha, muito boa a aula amigo! Obrigado por repassar esse conhecimento

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

    novamente excelente video!!!! parabéns!!!!

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

    Vídeo impressionante!!!

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

    Achei legal que você tem a coleção da Fundação lá atrás :D Bom demais os livros do Asimov

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

      São ótimo!

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

    Adorei!!! Explicação muito didática!! Parabéns

  • @4ldo.
    @4ldo. 2 ปีที่แล้ว

    Excelência em conteúdo e didática

  • @adnasilva-li3gg
    @adnasilva-li3gg ปีที่แล้ว

    Muito bom!!! Me ajudou demais!!!!

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

      Que bom que ajudou!

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

    Voce e ótimo para explica
    Teoria
    Pratica
    Muito bom isso, parabéns gostei

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

    sensacional. jah compartilhei e curti, logico. parabens. (vim pela indicação do Deschamps)

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

      Muito obrigado! Seja bem vindo!

  • @igor-yc7ey
    @igor-yc7ey 4 ปีที่แล้ว

    Muito boa a abordagem utilizada no vídeo, acredito que tenha facilitado bastante para iniciantes

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

      Obrigado, Igor!

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

    Grato pelo conteúdo!!

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

    Nossa eu sou extranjero e moro no Brasil e estou estudando Engenharia e voce explica muito bom (melhor que meu professor kkkkk) a unica coisa que queria saber é se preciso algum Driver o uma library pra colocar from search import binary_search porque sempre me da erro quando eu coloco e terminar tirando do programa e da de boa so que coloco o outro programa acima pra poder testar ele mas gosto muito de seus video Parabens pelo trabalho que faz e muito obrigado por explicar de um jeito muito facil Deus abençõe muito sua vida e seu trabalho

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

    Assistido ✔️
    De longe, acho que um dos melhores algoritmos que inventaram.

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

    Gratidão

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

    caraca q top hein, parabéns e obrigado!!

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

      Nós que agradecemos!

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

    Muito didático, me ajudou muito. Parabéns!!!

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

      De nada! Bons estudos 🤙🏾

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

    Excelente vídeo.

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

    Ótima aula! Tenho uma dúvida pra que essa busca seja rápida é preciso aplicar ela em um arranjo estático?em qualquer caso negativo ou positivo?

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

      A busca binária só funciona em uma lista ordenada. Se a aplicação vai precisar atualizar os dados com frequência, por exemplo, adicionando dados novos, o mais adequado é usar uma estrutura de dados que sempre os mantém organizados segundo uma ordem. Exemplos de estruturas assim: árvore AVL e árvore rubro-negra.

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

    Mano,tu é mto brabo. Vlw pelo vídeo

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

    Mano, sem palavras. Parabéns.

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

      Muito obrigado 😁

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

    Obg pelo video amigo!! me ajudou bastante, uma ultima duvida, sabe me dizer onde ela é usada? exemplos de implementações

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

    Explicação muito boa...top!!!

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

    Ótima explicação ganhou mais um seguidor

  • @alexandreFerreira-fb2gs
    @alexandreFerreira-fb2gs 4 ปีที่แล้ว

    Não me canso de assistir esse canal... muitoooo bommm!!!!

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

    Sensacional cara, parabéns cara de verdade

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

      Obrigado! Bons estudos 🙌🏾

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

    Muito didático como sempre e muito legal a utilização da recursividade. Fica muito mais limpo!
    Ah... poderias mostrar os temas, extensões e outras dicas do VS Code...

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

      Valeu, Pedro! Tanta gente pedindo VS Code, vou ter que fazer 😆. Vou tentar colocar no final deste mês 🤙🏾

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

      Valeu, Pedro! Tanta gente pedindo VS Code, vou ter que fazer 😆. Vou tentar colocar no final deste mês 🤙🏾

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

    Vish tem professor no TH-cam que é melhor que em universidade

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

      Acontece...

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

    salvou minha vida

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

      Bom saber que foi útil pra ti!

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

    Show , implementei ele na cadeira de programação , o n log n se não me engano

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

      O(log(n)) apenas, ainda mais rápido!

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

    Qual esse theme que vc tá usando? Achei muito legal

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

      Cobalt2

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

      @@pgdinamica Obrigado 🙏🏻

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

    MUITO BOM!

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

    Olá, Hallison!
    Tudo bem?
    Tenho algumas dúvidas.
    Poderia me ajudar, por favor?
    No caso de um array = [1, 3, 5, 7, 9], caso o elemento escolhido seja 7. Primeiro calculo a média entre os índices final e inicial, nesse caso o 2. Como o elemento escolhido é maior que a média entre o índices final e inicial "ignoro" os elementos menores que 7, nesse caso, [1,3,5]. Restam apenas dois elementos no "novo array", [7, 9] e, por fim, o elemento escolhido 7 é encontrado.
    O número de operações é:
    1. operação [1, 3, 5, 7, 9]
    2. operação [7, 9]
    3. operação [7]
    São 3 operações para encontrar o elemento 7?
    Na representação do "O Grande", n seria 3 e a base 2?
    "Ignorei" os elementos [1, 3, 5] considerando a condição abaixo.
    else:
    begin = middle + 1
    Somei o índice do meio com 1 unidade para atualizar o inicio do novo array = [7, 9].
    Se tivesse escolhido o elemento 9, poderia considerar a condição abaixo.
    if array[middle] > item:
    end = middle - 1
    Índice 4 - 1 = 3 que exatamente a posição do elemento escolhido 7.
    O número de operações é mantido?
    A ideia é mais ou menos essa?
    Parabéns pelo canal!
    Nota 10!!😀

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

      Pela complexidade da tua dúvida (🥁, pegou? ahn, anh?😆), resolvi escrever um artigo no Medium explicando cada parte: medium.com/programacaodinamica/complexidade-da-busca-binaria-6febff7f940d
      Espero ter ajudado!

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

      @@pgdinamica Valeu, Hallison rsrs!😁
      Obrigado por responder minhas perguntas!
      Fiquei muito feliz quando li o artigo.😃
      Me ajudou muito.
      Parabéns pelo trabalho no canal!

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

    mt bom amigo

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

    Melhor canal!!

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

    Tenho uma dúvida, se na lista de repetidos em vez de o resultado ser a primeira vez que o número repetido aparece fosse a ultima vez o que eu mudaria na programação?

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

    Ola essa logica funciona com uma frase também ?

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

      Você deseja encontrar uma letra dentro de uma frase ou uma frase dentro de uma lista de frases?
      No primeiro caso, você teria que ordenar as letras da frase (o que desconstruiria a frase, por isso não imagino um caso útil agora).
      No segundo caso, você teria que definir uma ordenação para frases: "O que quer dizer frase1 < frase ?". Em Python, já existe uma ordenação entre as strings chamada de ordem lexicográfica (pt.wikipedia.org/wiki/Ordem_lexicogr%C3%A1fica)
      A ideia seria:
      "O rato correu" é menor que "O rato mordeu"
      porque temos um empate em cada caracter até o espaço depois de "rato", mas a próxima posição, do caracter "c" é menor que "m".
      Em todo caso, é importante que a sua lista esteja *ordenada* para aplicar essa busca. :)

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

      @@pgdinamica gostaria de encontrar uma frase ou parte da frase similar em uma lista de frases

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

    Ola Parabéns pela explicação. No entanto, uma duvida: tenho uma lista com 9000 elementos, e seleciono os 34 últimos dela, em seguida preciso percorre-la os 9000 elementos da lista, para certificar se a sequencia dos 34 últimos selecionado ocorre nas posiçoes anteriores, Caso encontre a sequencia recorrente eu exibo as posições na qual eles estão, nesta caso a busca binaria atende o requisito ?

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

      Hum, deixa eu ver se eu entendi. Você quer verificar se esses 34 últimos elementos selecionados ocorrem *na mesma ordem* em outra parte da lista?
      Se entendi bem, a busca binária não atende, porque *a lista deve estar ordenada* para que ela funcione. Se a lista estiver ordenada, não tem como você encontrar essa sequência em outro lugar...as sequências serão formadas por números idênticos ou consecutivos.

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

      Exatamente, se houve a ocorrência dos 34 últimos elementos na mesma ordem na lista, de modo que eu faria a leitura posição desde a primeira posição da lista, considerar assertivo encontroar 70% , encontrado, em seguida eu apresento em qual posição o evento ocorreu.

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

    no caso de eu precisar buscar um nome pelo id dele usando essa forma de busca ? eu to tentando mas não estou conseguindo

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

      A lista deve ser ordenada pelo chave que você deseja procurar. Se o mais importante pra busca é o ID e não o nome, tem que ordenar pelo ID.

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

      @@pgdinamica BOA NOITE, obrigado por responder, então eu não to conseguindo enxergar a sintaxe de como puxar essa chave. tipo o gato jogao tem id 2, como vou puxar esse id para aparecer o nome usando a busca binaria, e como vou fazer a sintaxe para o usuario digitar e fazer essa busca, to perdidao nisso

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

    Eu não cnsg ainda a rubro negra avl e a b+

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

      Vamos chegar lá! Árvore Binária de Busca já está gravado :)

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

      @@pgdinamica show , é muito cormen lido p desenrolar esse algoritmo.

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

    usei uma lista com [7,7,7,5,1,8,3] e só retorna o indexe do 5 e do 8, o resto que tentar buscar a função retorna None, peguei o código postado no guit deu o mesmo resultado, oque posso fazer?

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

      Oi, Ismael! Sugiro assistir ao vídeo para entender como o algoritmo funciona! Já em 0:38 inicia-se a explicação abordando o pré-suposto central da busca binária, que é ter uma lista ORDERNADA.
      Se você quiser aprender a ordenar, aqui no canal nós temos vídeos sobre os principais algoritmos de ordenação nesta playlist: th-cam.com/play/PL5TJqBvpXQv4l7nH-08fMfyl7aDFNW_fC.html
      Se apenas quiser ordenar, sem entender o que se passa, basta chamar o método *sort* da sua lista:
      from search import binary_search
      > lista = [7,7,7,5,1,8,3]
      > lista.sort()
      > binary_search(lista, 1) # elemento à sua escolha

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

      @@pgdinamica ok, entendido tem que se ordenar antes, uma lists ja ordenada deve ser passada, vlw

  • @junior-fs9vh
    @junior-fs9vh 3 ปีที่แล้ว

    mano é difícil pra cacete pra fazer essa pesquisa

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

      "Fácil" ou "difícil" é uma medida do quão distante a pessoa que você é hoje está da pessoa capaz de compreender o assunto. Volte, estude a base a construa o seu conhecimento para compreendê-la. Estes conteúdos podem te ajudar:
      1. Playlist estrutura de dados: th-cam.com/play/PL5TJqBvpXQv5Bb71AE5Cd_kB5rNsfU4Cp.html
      2. Por que e como estudar ALGORITMOS e ESTRUTURA DE DADOS? th-cam.com/video/SqBgnMgFQTU/w-d-xo.html
      3. Como VENCER O BLOQUEIO na hora de ESTUDAR? A segunda coisa MAIS IMPORTANTE para APRENDER algo novo th-cam.com/video/0pR36PKRS3U/w-d-xo.html
      4. ESTUDE ENQUANTO ELES DORMEM 🤡 Quanto tempo estudar por dia? th-cam.com/video/j6hcALm0mLM/w-d-xo.html
      Bons estudos!

  • @VivianneLopes-es5kc
    @VivianneLopes-es5kc ปีที่แล้ว

    Vou ser sincera que não entendi essa parte do código:
    def test_empty():
    if binary_search(empty, random.randint(0, 1000)) is not None:
    return False
    return True

    def test_single():
    if binary_search(single, 7) :
    return False
    if binary_search(single, 10) is not None:
    return False
    return True
    if __name__ == "__main__":
    print("*******************************")
    if test_empty():
    print("PASSOU VAZIO")
    else:
    print("FALHOU VAZIO")
    if (test_single()):
    print("PASSOU UNICO")
    else:
    print("FALHOU ÚNICO")

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

    boa!!
    Otimo conteúdo

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

    Muito obrigado pela explicação, eu tenho uma dúvida. Eu posso transferir dados de um database para uma lista e fazer a busca binária, só indicando as colunas e no resultado da pesquisa receber os dados da linha encontrada?

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

      Poder, pode, mas a princípio, não vejo um motivo para isso...os bancos de dados costumam ser bem otimizados, principalmente se você utilizar recursos como índices corretamente. Quando você usa um banco de dados, a responsabilidade por implementar estruturas de dados e algoritmos eficientes para armazenamento e busca é do banco. Agora, claro, uma vez que você recuperou dados do banco e passou a manipulá-los na sua aplicação, aí você se torna responsável pela eficiência das operações.