A maioria dos algoritmos de matriz fundamental — usando Python | Suman Datta | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

A maioria dos algoritmos de matriz fundamental — usando Python

teacher avatar Suman Datta, just a coder

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Apresentação

      1:37

    • 2.

      Array — uma introdução simples

      8:25

    • 3.

      Algoritmo de separação de array

      9:31

    • 4.

      Programa Python de partição de matriz

      5:21

    • 5.

      Algoritmo de pesquisa binária

      12:25

    • 6.

      Programa Python de pesquisa binária

      7:05

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

18

Estudantes

--

Projeto

Sobre este curso

Todos os aspirantes a programadores — esse curso vai apresentar o trabalho interno de alguns dos algoritmos mais básicos. Desenvolver um algoritmo do zero revela muitos detalhes internos que de outra forma não são óbvios. A programação é muito sobre ser capaz de lidar com esses detalhes. Esse curso lida com algoritmos simples e conhecidos que trabalham em uma variedade de números. O objetivo é visualizar claramente o que acontece sob o capô para esses algoritmos mais básicos. Saber esses detalhes é uma necessidade para se tornar um programador confiante.

Sobre mim: sou Suman Datta, um Consultor de Finanças Quantitativo com mais de 20 anos de experiência em codificação prática e design de software em áreas como modelagem quantitativa, programação estatística e ciência de dados.

Conheça seu professor

Teacher Profile Image

Suman Datta

just a coder

Professor
Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Apresentação: Olá a todos. Bem-vindo a esta aula sobre os algoritmos mais fundamentais. Esta aula lhe dará aulas práticas para implementar alguns dos algoritmos mais básicos do zero. Se você é iniciante em programação ou é um programador experiente, esta aula será útil. Isso lhe dará a oportunidade de voltar ao básico e rever como as porcas e os parafusos de alguns dos algoritmos mais fundamentais se encaixam. Eu ensino usando uma linguagem muito simples, sem jargão. Primeiro, a lógica é explicada no papel e, em seguida, o programa é desenvolvido do zero usando a ferramenta PyCharm. Você precisará de um computador com conexão à internet. E para o Anaconda e o PyCharm do software. Por favor, considere o comprimento do osso do calcanhar para o processo de instalação. Você deve estar pronto para escrever e executar programa no ambiente PyCharm. Antes de começar este curso. No final, você dominará esses algoritmos básicos e novos programadores desenvolverão um apetite por mais programação. O que se segue depois disso é para aulas sobre alguns dos algoritmos mais básicos e para diferenciar a implementação do zero. Listen tem uma manipulação simples como aquecimento. lição 3.4 é sobre busca binária e particionamento de edição, algoritmos muito básicos, como você sabe. Finalmente, em menos de cinco, temos um projeto de classe sobre implementação do algoritmo Quicksort do zero. Isso é tudo sobre isso. Estou ansioso para ver todos vocês lá. 2. Matriz: Olá a todos. Nesta lição, aprenderemos sobre um tipo de dados muito básico que pode armazenar vários objetos juntos. Isso é chamado de matriz. Uma matriz é um conjunto de objetos armazenados lado a lado na memória do computador. Em nossa discussão, tomaremos números inteiros como objetos. Vamos dar um exemplo. É uma matriz contendo os números 289214 menos seis em Python. E a matriz também é chamada de lista. Os elementos são colocados lado a lado na memória. A posição de cada elemento da matriz é conhecida como índice. O índice começa em zero. Isso significa que o índice do primeiro elemento é zero. índice do segundo elemento é um, índice do terceiro elemento é dois e assim por diante. Dessa forma, o índice do último elemento é um a menos que o comprimento total da matriz. Portanto, na matriz dada, existem cinco elementos e os índices são 01234. Vamos ver como podemos acessar cada elemento de uma determinada matriz e imprimir os números. Em Python. função de impressão é usada para impressão. função de impressão pode imprimir o total somado em uma chamada para esta função. Isso significa que a função de impressão conhece a estrutura interna da matriz. Para acessar cada elemento da matriz, precisamos percorrer a matriz usando um loop for. Esse for-loop imprime cada elemento da matriz. O próximo loop for percorre cada índice da matriz e imprime o valor nesse índice. Esse loop for percorre cada índice e os valores correspondentes simultaneamente e imprime os dois. Eu sugiro que você descubra mais sobre essas duas funções, range e enumerate, pois elas são muito úteis para escrever um loop. Em seguida, implementaremos um algoritmo para calcular a soma contínua de uma matriz de números inteiros. Então, o que é soma corrente? soma do elemento de uma matriz é a soma de todos os elementos de zero a Pi. Então, após a soma, obtemos o vale superior como a soma contínua da matriz original. soma corrente para o primeiro elemento é o próprio elemento. soma corrente para o segundo elemento é a soma dos dois primeiros elementos. soma corrente para o terceiro elemento é a soma de três elementos e assim por diante. Gostamos das etapas em uma linguagem simples e tentamos visualizar como o algoritmo é executado passo a passo. Vamos tentar visualizar esse algoritmo. Comece com um ponteiro p no segundo elemento de a. Então, temos um ponteiro p. Vamos fazer com que ele aponte para o segundo elemento que é a. Então aqui p é um ponteiro, que significa que ele contém o valor do Então, temos um ponteiro p. Vamos fazer com que ele aponte para o segundo elemento que é a. Então aqui p é um ponteiro, o que significa que ele contém o valor do índice do segundo elemento, que é um. Então, atualmente P é igual a um. Agora, precisamos substituir o valor em p pela soma de seu valor e o valor anterior. Isso significa que substituímos oito por oito mais dois, o que é dez. Em seguida, damos um passo à frente e fazemos a mesma coisa. Isso significa substituir 91 por 91 mais dez, o que é 101. Agora, vamos dar um passo à frente. Ele reproduz o valor de pela soma de 4,101, que é 105. E continuamos da mesma forma. Então, mova B um passo à frente e substitua o valor atual que é menos seis por menos seis mais 105, que é 99. E chegamos ao final da matriz. Então, o algoritmo para aqui. Dessa forma, podemos encontrar a soma contínua de uma determinada matriz de números. Observe que não criamos nenhum novo LEA para encontrar essa soma contínua, substituímos cada elemento da matriz por seus correspondentes . Em seguida, tentaremos reverter isso, dado qualquer um, isso significa que dada uma matriz, digamos 289214 menos seis, inverteremos a ordem dos elementos nessa matriz. Então, após a reversão, a matriz se tornará menos 6492182. Vamos selecionar o algoritmo em linguagem simples. Então, primeiro definimos dois ponteiros no primeiro e no último elemento da matriz, CPS e PE. Portanto, temos PAs e PE. Em seguida, precisamos trocar os valores de P, S&P e, em seguida, avançar uma etapa e PE retroceder em uma etapa. Isso significa que movemos P, S&P um em direção ao outro em um passo cada. E precisamos fazer esse movimento de uma etapa de cada um e trocar os valores correspondentes até que eles se cruzem. Vamos fazer isso passo a passo e tentar ver o que realmente está acontecendo. Portanto, temos P, S&P nos dois extremos. Precisamos trocar seus valores. Isso significa que precisamos trocar as posições de dois e menos seis. Então trazemos para aqui, trazemos menos seis aqui para aqui. Em seguida, movemos o VS um passo à frente e o PE um passo para trás. E, novamente, troque seus valores. Nós movemos cervejas e b0. Agora eles estão apontando para o mesmo local. Então, soluçar não tem efeito. Basicamente. parar aqui ou se quisermos dar o quarto passo, uma vez que o pai eu posso fazer isso e desde agora eles se cruzaram. Nós paramos. Dessa forma. Podemos reverter os elementos da matriz usando dois ponteiros. Espero que você entenda a ideia por trás desses algoritmos. Nesta lição, tentamos visualizar os estados de alguns dos algoritmos mais básicos. Ainda não escrevemos nenhum código Python. Na próxima lição, escreveremos e executaremos algum código real no ambiente Python. Então, isso é tudo para esta lição. 3. Algoritmo de partição: Olá a todos. Nesta lição, aprenderemos sobre particionamento. Então, o que é o particionamento de Ellie? Vamos explicar com um exemplo. Vamos pegar um LEA com os seguintes números. Ou seja, 387-272-1402 particionando essa matriz, precisamos primeiro escolher um número especial chamado pivô, que é um dos números presentes na matriz. Digamos que escolhemos quatro como o número do pivô. Precisamos reorganizar os números na matriz. Então, depois de reorganizar todos os números à esquerda do pivô, ou menores ou iguais ao valor do pivô. E todos os números à direita do pivô são maiores ou iguais ao valor do pivô. Se considerarmos o SDP vert , uma possível solução pode ser mostrada na tela. A solução é 032-14-7078. Observe que os números à esquerda do pivô são menores que iguais a quatro. Números à direita de quatro, iguais a quatro. A submatriz esquerda e as pernas não são necessariamente ordenadas por si mesmas. Observe também que, se tivéssemos classificado a matriz inteira, depois de particionar, a posição, o pivô, ficaria igual à posição que obteria depois de classificar a matriz inteira. Extraia para desenvolver um algoritmo para particionar esse determinado LA. Vamos examinar o algoritmo passo a passo. Primeiro, precisamos colocar o pivô na primeira localização dessa matriz. Em seguida, precisamos pegar dois ponteiros, P1 e P2, e fazê-los apontar para os dois primeiros elementos, respectivamente. Então p1 aponta para o primeiro elemento e v2 aponta para o segundo elemento. Então, precisamos mover o P2 um passo de cada vez até o final deste LA. E ao mover isso, em cada etapa, precisamos fazer algo chamado check and swap. Então, o que precisamos fazer da seguinte maneira? Em cada posição de P2, precisamos verificar se o valor em p2 é menor ou igual ao pivô. Se não, então não faça nada. Mas se sim, precisamos incrementar o outro ponteiro p1 uma etapa e, em seguida, trocar os valores de P1 e P2 parará quando P2 atingir o final da matriz. Vamos executar as etapas. Portanto, atualmente P2 está na posição dois e seu valor é oito. Portanto, P2 não é menos do que b trabalhou. Portanto, ambos devem ser entregues em uma única etapa. Então 77 é novamente não menos que igual a quatro. Então, movemos o P2 em uma etapa. Agora, dois é menos do que o pivô para. Então, precisamos fazer essa subetapa aqui. Então, o que precisamos fazer agora é mover p1 um passo à frente e, em seguida, trocar os valores de P1 e P2. Então, novamente, mova P2 em um passo. E, novamente, vemos que o valor em P2, que está ligado, é menor ou igual a quatro. Portanto, precisamos executar novamente essa etapa de troca, que é a primeira transformação de P1 em uma etapa. Em seguida, troque os valores de P1 e P2. Novamente, mova P2 em um passo. E, novamente, observamos que o valor em P2, que é três, é menor ou igual a quatro. Então, novamente movemos p1 em uma etapa e, em seguida, fazemos a troca. Mais 321 passos. E vemos que zero é novamente menor que igual a quatro. Então, movemos um por um passo e depois fazemos a troca. Nesse ponto, P2 está no final dessa matriz. Então, o loop sobre P2 terminou. Agora, como última etapa, precisamos trocar a primeira localização da matriz, que é o valor do pivô, por p1. Isso colocará o pivô em seu local de classificação correto. E agora vemos que todos os números à esquerda do pivô ou menores que são iguais a quatro. E todos os números à direita do pivô são maiores que iguais ao valor do pivô para. Essa é uma partição válida da matriz. Espero que isso tenha ajudado a visualizar as etapas internas ao aprender o algoritmo. Em seguida, examinaremos o código Python para esse algoritmo de partição. Aqui está uma função Python chamada partição, que recebe uma entrada chamada a, que é Danny, e particiona em relação a um pivô. E isso pressupõe que o pivô esteja localizado na primeira posição dessa matriz. Vamos examinar esse algoritmo linha por linha. Primeiro a inicializar os dois ponteiros, p1 e p2 a 0,1, respectivamente. Em seguida, definimos o pivô lendo a primeira localização da matriz que é zero. Então, como mencionamos anteriormente, gostamos de examinar o P2. Portanto, P2 se move de sua localização atual até o final da matriz. O final da matriz é indicado pelo comprimento da matriz. Em seguida, na próxima declaração if, implementamos a lógica que discutimos anteriormente. Ou seja, se a de p2 for menor que igual ao pivô, movemos p1 e trocamos os valores de P1 e P2. Esta linha AFP uma vírgula f p2 é igual a f B2 vírgula f de p1 é a expressão Python para trocar dois valores. Aqui, os valores são a de P1 e P2. Portanto, essa é uma sintaxe muito intuitiva. E então comece esta declaração if, continuamos movendo P2, bem, uma etapa em cada iteração desse loop while. E quando eles saem do loop while, ou seja, isso significa que quando P2 atinge o final da matriz, nós novamente trocamos é zero e a de P1. Isso é para trazer o pivô de sua localização atual, que é o início da matriz, até sua localização final. E isso é tudo para esta lição. 4. Programa Python: Olá a todos. Nesta lição, executaremos o programa Python para particionamento de matrizes. Aqui temos a função de partição que já vimos. Além disso, há uma função principal que cria uma lista chamada minha lista e chama a função de partição com minha lista como entrada. Vamos executar o programa no modo de depuração. Vamos colocar um ponto de interrupção na função principal e executá-lo. Então, estamos no ponto de interrupção. E vamos primeiro criar a lista, minha lista. Fique de olho na seção dessas variáveis e você poderá ver os valores das variáveis. Em seguida, entre na função de partição. Primeiro inicialize p1 e p2, os dois ponteiros. E então defina o pivô, que assumimos o primeiro elemento da matriz de entrada. Então, aqui o pivô é quatro. Vamos inserir o loop sobre P2. Portanto, P2 se move de sua localização atual para o final da matriz. Primeiro, se P2 for oito, o que não é menor que igual ao período quatro. Então, passamos pela instrução if e vamos para a próxima iteração do loop. Agora, se P2 for igual a 77, o que não é menor que igual ao pivô. Então, passamos para a próxima iteração. Agora, se P2 for dois, o que é menor que igual ao pivô quatro. Então, entramos na instrução if, incrementamos além de u1 e fazemos a troca. Vamos para a próxima iteração. Agora o AF P2 está ligado. Então, novamente, insira a instrução if e faça a troca. Na próxima iteração de P2 é três, o que é menor que igual ao pivô quatro. Então, novamente, inserimos a instrução if e fazemos a troca. Na próxima iteração. Se B2 é zero, o que é menor que igual a p, para quê? Então, inserimos a instrução if e fazemos a troca novamente. E agora o P2 chegou ao final da matriz. Então, saímos do ciclo while. E então fazemos a troca final, o valor do pivô, que está no primeiro local com b1. E isso completa o algoritmo. Não na seção de variáveis. Você pode ver o estado atual da lista mental. E foi particionado. Então, todos os números à esquerda de quatro ou menores que são iguais a quatro e todos os números à direita de quatro ou maiores que são iguais a quatro. Então, se eu tivesse que explicar todo o algoritmo em uma linguagem muito simples, seria assim. Existem dois ponteiros, p1 e p2. O que eles realmente fazem? B1 mantém um limite entre as duas partições. A partição esquerda, que vai do início da matriz até p1, é o conjunto de números que são menores que iguais ao valor do pivô. E os números à direita de P1 são os números maiores do que iguais ao valor do pivô. Então, como p1 e p2 conseguem isso? B2 explode cada novo número da matriz. E se esse número recém-explorado for menor que igual ao valor do pivô , B1 estende o limite esquerdo e esse novo número é movido para a partição esquerda. Ao trocar. Dessa forma, a partição esquerda sempre contém valores menores que iguais ao pivô. E a partição certa contém valores maiores do que iguais ao valor do pivô. Observe que a partição correta começa após T1 e se estende até P2. Eu sugiro que você passe por este programa em seu ambiente de programação Python. Para que as etapas internas se tornem muito claras para você. E isso é tudo para esta lição. 5. Algoritmo de busca binário: Olá a todos. Nesta lição, aprenderemos sobre a busca binária. Então, o que é busca binária? Aqui? Recebemos uma matriz ordenada de números inteiros e também recebemos outro único inteiro x, precisamos encontrar a localização de x nessa matriz classificada a. Se x não estiver presente em a, então podemos retornar menos um. Vamos dar um exemplo. Recebemos a matriz classificada a, seja, você pode ver que é classificada em ordem crescente. E também recebemos outro número x. Precisamos encontrar a localização de x. Se x estiver presente em a, caso contrário, precisamos retornar menos um. Então, aqui podemos ver que sete está presente no LEA. E a localização de sete é o índice quatro. Isso significa o quinto lugar. Então, precisamos devolver quatro. Nesse caso. Se o valor de x for, então podemos ver que nove não está presente no dado a. Portanto, a busca binária deve retornar menos um. Vamos tentar visualizar o algoritmo de busca binária. Recebemos a matriz classificada, que é classificada em ordem crescente. E precisamos pesquisar um determinado número X em a. Aqui, o valor de x é sete, então precisamos pesquisar por sete. Em primeiro lugar, observe que podemos percorrer toda a matriz, um elemento por vez, e procurar x. Isso levará n passos, onde n é o número total de elementos na matriz. Se a matriz for muito longa, o tempo necessário para pesquisar dessa maneira também será muito longo. Portanto, essa não é uma maneira eficiente. Se a matriz não estiver classificada, teremos que fazer dessa maneira. Mas agora a matriz está classificada. Então, precisamos usar essa propriedade para acelerar nosso algoritmo. Vamos escrever o algoritmo em uma linguagem simples. Primeiro, precisamos definir dois pontos no início e no final da matriz. Digamos que o LPS e p. Dissemos que P está no início e p no final. Em seguida, encontramos o ponto médio de P S&P. Isso significa que encontramos P S mais p todos divididos por dois e arredondados abaixo. Então, isso é chamado de ponto médio. Observe que isso é deixado de forma tendenciosa. Isso significa que P S seguro é dois e p é três. Então mate é dois mais 3/2. E essa divisão é uma divisão inteira. Então, o resultado é dois. ponto médio de 2,3 é dois, ponto médio de 23,4 é três. ponto médio de 234,5 é três. É por isso que é chamado de feito tendencioso à esquerda. Vamos calcular a média da corrente P S&P. P S é zero e P é 70 mais sete por dois, o que é 3,5. Arredondado. Olá é três igual a três. Então, mid é colocado no índice três. Agora, estamos procurando por x. Então, comparamos o valor em mim com x. Se x é igual a mate , você encontrou a localização de x e retornamos o valor da carne. Se não, então x está à direita da carne ou à esquerda da carne. Se x for maior que carne, então x está à direita da carne. E nesse caso, podemos contornar o que está à esquerda da carne para que possamos descartar todo o subconjunto, o encontro de decolagem. Dessa forma, podemos reduzir o espaço de pesquisa muito rapidamente. Portanto, em cada iteração, metade da matriz total pode ser descartada. E isso torna essa busca binária muito rápida. Agora, x é maior que três. Então, movemos o PS. Conheça mais um. Isso significa o logo à direita do feito anteriormente. Agora sabemos que o que resta à esquerda dos colegas pode ser descartado. Reduzimos nosso espaço de busca pela metade. Agora. Mais uma vez, me calcule. Então, atualmente PACs quatro e p é sete. Portanto, a carne de 4,7 é 5,5. Arredondado abaixo está cinco. Então, vamos nos encontrar às cinco. Agora, o valor da carne é 88 não é igual a x. E vemos que agora x é menor que mate. Então, movemos B para fazer menos um. Agora, na próxima iteração, novamente, calculamos o meio. Então você verá que, como PAs e PE têm o mesmo valor, o valor da carne também será o mesmo. Então, novamente, vamos apontar para o mesmo local. Agora. X é igual a encontrar x. E nós retornamos, fizemos. Dessa forma. Podemos encontrar a localização de x nos dados classificados. Agora vamos dar outro exemplo que x não está presente no LA, digamos que x é igual a nove. Novamente, começamos com o PAS no início. E no final. O meio aponta para o ponto médio. Comparamos o valor em, que é três com x, x é nove. Então x deve estar à direita da carne. Então, movemos o VS para encontrar mais um. E, novamente, calculamos o que está aqui. Comparamos o valor x com x. O valor de x é nove, então nove é maior que oito. Então x deve ser a luz da carne. Então, movemos os PAs para o meio mais um. Agora calculamos o encontro novamente, seja, que será o mesmo que bs. Comparamos x com Nate e descobrimos que x é menor que carne agora. Então, movemos B para o meio menos um. E nesta fase, observe que a P S&P se cruza. Então paramos e retornamos menos um. Isso significa que, nesse caso, X não está presente nessa matriz classificada. Vamos dar uma olhada no código Python para a função de busca binária. A função aceita dois argumentos. A primeira é a matriz, é uma matriz de números inteiros ordenados em ordem crescente. E x é outro número inteiro. Precisamos encontrar a localização de x dentro de a. E se x não estiver presente, retornaremos menos um. Vamos analisar a função linha por linha. Primeiro, inicializamos P, S&P, os ponteiros de início e fim. Então p é, é inicializado em zero, ou o índice da localização mais à esquerda. E PE é igual ao comprimento de um menos um. Esse é o índice da localização mais à direita. Em seguida, iniciamos o loop while com a condição P S é menor que igual a p. Isso significa que continuamos com o loop while. Os dois ponteiros não se cruzam. Primeiro, calculamos o mate, que, como explicamos anteriormente, é o encontro tendencioso à esquerda. E então verificamos se x é igual a a de mid. Isso significa uma estimativa de valor. Se a de mid é igual a x, então encontramos x e retornamos a localização que foi feita. Caso contrário, então, dependendo se x é maior que a ou x é menor que a metade feita, descartamos metade da matriz. Então, se x for maior que a de mid, descartamos a metade esquerda da matriz e o valor em si. Isso significa que definimos como meio mais um. Se x for menor que m it. Em seguida, descartamos a parte direita da matriz e configuramos p para o meio menos um. E, novamente, calculamos par com essas localizações atualizadas da P S&P. E repetimos dessa maneira. Então, em cada iteração, descartamos metade da matriz. Então, no final, duas coisas podem acontecer. Ou X é encontrado e, nesse caso, retornamos a localização correspondente de X ou X não foi encontrado. E P, S&P se cruzam. E saímos disso enquanto fazemos um loop e retornamos menos um. Nesse caso. Espero que você tenha uma ideia básica como esse algoritmo de busca binária funciona. Isso é tudo para esta lição. 6. Programa Python: Olá a todos. Nesta lição, você aprenderá o programa Python para pesquisa binária. Aqui está a função de busca binária, que você já viu. Além disso, escrevemos uma função principal que chama a busca binária. Então, vamos colocar um ponto de interrupção na função principal e executá-lo. Então, estamos no ponto de interrupção. Então, primeiro, criamos uma matriz que já está classificada. Como você pode ver. Fique de olho na seção de variáveis, onde você pode ver os valores atuais das variáveis. Definimos x a sete. E então chamamos função de busca binária com a e x como entradas. Queremos encontrar a localização de X em a. Então, vamos entrar na função de busca binária. Primeiro, P, S&P. Os ponteiros inicial e final foram inicializados em 0,7, respectivamente, como você verá na seção de variáveis. Em seguida, inserimos o loop while com a condição P menor que igual a p. Em seguida, calculamos que o valor médio da mídia é três. E então verificamos se x é igual ou menor que, igual ou menor ou maior que a carne. Observe que quando comparamos x com carne, o que realmente queremos dizer é o valor no ponto a de meados, se for igual a atendê-lo e já o encontrarmos, e a função retornará. Mas se não, então ele reinicia. Ou p é RPE, dependendo se x é maior ou menor que. Vamos ver. Então aqui o valor de x é sete, como sabemos, e a de mid é três. Então x não é igual a x é maior que a metade. Então, redefinimos o ponteiro ps para fazer mais um. Nesta etapa, descarte metade disso. Então vá para a próxima iteração. Com os novos valores de P S&P. O novo valor de P, S é quatro e p é sete. Então, agora estamos examinando a submatriz, começando no local da falha e até esse determinado local, calculamos o encontro novamente. O valor da carne agora é cinco é igual a oito. Portanto, atualmente é menos de um de meados. Então, ele vem aqui. E agora definimos p0 para meio menos um. Agora veja as variáveis que a seção P, BE e PAs têm o mesmo valor, que é quatro. Então, aponte para o mesmo local na matriz. Nós calculamos o meio. Mid também é para, obviamente. Então agora x é igual a f meet. E retornamos mid, que é o valor quatro. Então, retornamos da função de busca binária e o resultado é quatro. Isso significa que X está presente no índice quatro da matriz classificada. Vamos mudar X, 7-9. E, novamente, siga este programa. Temos o mesmo LEA, que já está classificado. Definimos x como nove e depois entramos na busca binária. Então P, S&P são inicializados. Inicie o loop. O valor da carne inicialmente é três. Então x não é igual a x é maior que m, é bs mais um. E continue até a próxima iteração. E agora o MIT tem cinco anos. Portanto, AF feito não é igual a x, é menor que x. Então, reiniciamos agora ps para colocar luvas e vamos para a próxima iteração. Calcule o encontro novamente, que é seis. Então AF tomou sua decisão agora, que não é igual a x. Não, x é menor que a de meados. Certamente venha aqui e faça um reset p menos um. Agora, observe que o valor de P, S é seis e o valor de B é cinco. Isso significa que P e S&P se cruzaram. Aqui, o loop while é interrompido e retornamos menos um. Então você verá que o resultado é menos um. Nesse caso, o valor de x não é encontrado na matriz classificada, então ele retorna menos um. Eu sugiro que você passe por essa função de pesquisa binária em seu ambiente de desenvolvimento Python para se familiarizar com as etapas internas. E chame essa função com diferentes matrizes classificadas com comprimentos diferentes. E, assim, familiarize-se com o funcionamento interno desse algoritmo. Isso é tudo para esta lição.