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

Поделиться
HTML-код
  • Опубликовано: 28 окт 2024

Комментарии • 112

  • @J.Vinicius-o7b
    @J.Vinicius-o7b 10 месяцев назад +10

    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 10 месяцев назад +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  Год назад

      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 🙂

  • @Lucassilva-cp4eg
    @Lucassilva-cp4eg 2 года назад +1

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

  • @jonathanesteves7461
    @jonathanesteves7461 9 месяцев назад

    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  9 месяцев назад

      Valeu, Jonathan! Bons estudos 🙌🏾

  • @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!

  • @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

  • @willianrodrigues4943
    @willianrodrigues4943 Год назад +2

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

  • @lucasz8105
    @lucasz8105 6 месяцев назад

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

  • @lidroxd6869
    @lidroxd6869 Год назад

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

  • @AuladaPriscila
    @AuladaPriscila 4 года назад +3

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

  • @maycolmichelmohr2702
    @maycolmichelmohr2702 Год назад

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

  • @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!

  • @filipemagno7095
    @filipemagno7095 Год назад

    Vídeo impressionante!!!

  • @BryanSBelum
    @BryanSBelum 5 месяцев назад

    Parabéns, video excelente!

    • @pgdinamica
      @pgdinamica  5 месяцев назад

      Muito obrigado 😊

  • @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.

  • @igor-yc7ey
    @igor-yc7ey 4 года назад

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

  • @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!

  • @kevinoliveira7194
    @kevinoliveira7194 3 года назад

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

  • @raniel0511
    @raniel0511 3 года назад

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

  • @4ldo.
    @4ldo. 2 года назад

    Excelência em conteúdo e didática

  • @alessandroaquiris849
    @alessandroaquiris849 3 года назад

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

  • @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?

  • @adnasilva-li3gg
    @adnasilva-li3gg Год назад

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

  • @BrunooS15
    @BrunooS15 2 года назад

    Grato pelo conteúdo!!

  • @alexandreFerreira-fb2gs
    @alexandreFerreira-fb2gs 4 года назад

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

  • @dezminutossobredeus
    @dezminutossobredeus 3 года назад

    Mano, sem palavras. Parabéns.

  • @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 🤙🏾

  • @nilberthsouza
    @nilberthsouza 2 года назад

    Excelente vídeo.

  • @joaopedrocosta1596
    @joaopedrocosta1596 2 года назад

    Sensacional cara, parabéns cara de verdade

    • @pgdinamica
      @pgdinamica  2 года назад

      Obrigado! Bons estudos 🙌🏾

  • @lucasramon8232
    @lucasramon8232 4 года назад

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

  • @emerson33381
    @emerson33381 3 года назад

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

  • @andredeoliveira8986
    @andredeoliveira8986 3 года назад

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

    • @pgdinamica
      @pgdinamica  3 года назад

      De nada! Bons estudos 🤙🏾

  • @benjamimtxr
    @benjamimtxr 2 года назад

    Gratidão

  • @naoExiste00
    @naoExiste00 2 года назад

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

  • @kelwinfaria5097
    @kelwinfaria5097 2 месяца назад +1

    Vish tem professor no RUclips que é melhor que em universidade

  • @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!

  • @SGLucca
    @SGLucca 4 года назад

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

  • @seamanbr2141
    @seamanbr2141 2 года назад

    Ótima explicação ganhou mais um seguidor

  • @GRAZIoficial
    @GRAZIoficial 3 года назад

    Melhor canal!!

  • @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

  • @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.

  • @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

  • @lucasemanoelalbinogomesesi7379
    @lucasemanoelalbinogomesesi7379 2 года назад

    salvou minha vida

    • @pgdinamica
      @pgdinamica  Год назад

      Bom saber que foi útil pra ti!

  • @gilmarcossantos3951
    @gilmarcossantos3951 4 года назад

    MUITO BOM!

  • @matheuscosta5330
    @matheuscosta5330 3 года назад

    mt bom amigo

  • @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: ruclips.net/p/PL5TJqBvpXQv4l7nH-08fMfyl7aDFNW_fC
      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

  • @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.

  • @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: ruclips.net/p/PL5TJqBvpXQv5Bb71AE5Cd_kB5rNsfU4Cp
      2. Por que e como estudar ALGORITMOS e ESTRUTURA DE DADOS? ruclips.net/video/SqBgnMgFQTU/видео.html
      3. Como VENCER O BLOQUEIO na hora de ESTUDAR? A segunda coisa MAIS IMPORTANTE para APRENDER algo novo ruclips.net/video/0pR36PKRS3U/видео.html
      4. ESTUDE ENQUANTO ELES DORMEM 🤡 Quanto tempo estudar por dia? ruclips.net/video/j6hcALm0mLM/видео.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 Год назад

    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.