Pesquisa binária C ++

Pesquisa binária C ++
C ++ cria muitos métodos de pesquisa para pesquisar uma variável específica da matriz ou alguma outra estrutura de dados. Entre todos eles, a pesquisa binária é bastante conhecida por sua resposta rápida. Uma matriz será convertida pela metade dentro da pesquisa binária enquanto já estiver classificado. A comparação seria feita por um ponto médio de uma matriz. Esse valor do ponto médio nos diria para pesquisar o valor necessário na metade esquerda de uma matriz ou a metade direita. Metade do tempo para pesquisa será salva ao trabalhar com o método de pesquisa binária em comparação com outros métodos de pesquisa. Assim, dentro deste artigo fácil, discutiremos alguns exemplos para ilustrar o funcionamento da pesquisa binária usando métodos de pesquisa iterativa e recursiva.

Depois de abrir o shell do terminal rapidamente, você deve precisar de um arquivo C ++ para criar seu código de pesquisa binário nele. Portanto, um simples comando de palavra-chave de uma palavra, eu.e., "Touch", será utilizado por esse motivo. Então, estamos usando -o para criar um arquivo C ++ chamado “Binário.CC ”e abrindo-o através do editor Nano GNU embutido que cria a configuração do Ubuntu 20.04 Sistema. Ambos os comandos já foram demonstrados com a ajuda da imagem abaixo.

Exemplo 01: Método iterativo

O primeiro método que estamos utilizando aqui é o método iterativo de pesquisa binária. Seria bastante simples de fazer. Depois que o arquivo foi aberto no editor Nano, adicionamos os arquivos de cabeçalho necessários para o código executar. O espaço para nome que deve ser padrão é necessário para o código C ++ aqui. Uma função definida pelo usuário chamada "Pesquisa" foi criada para executar uma pesquisa binária. Esta função definida pelo usuário leva 4 argumentos em seus parâmetros, eu.e., “A []” para a matriz, deixado para matrizes deixadas mais valor, para as matrizes mais altas da direita e V para o valor ser pesquisado na matriz “a”.

Dentro do início desta função, usamos um loop simples de “enquanto” para verificar se o valor mais à esquerda ou o primeiro valor da matriz é menor ou igual ao valor mais à direita (inserido finalmente) da matriz ou não. Se o valor for menor ou igual ao valor mais certo, ele criará um novo ponto na matriz, eu.e., MID. Este ponto médio foi calculado usando a esquerda e a direita. Depois que o ponto médio foi encontrado, estamos usando a declaração "se" para verificar se o valor no índice médio de uma matriz "a" é o mesmo que o valor solicitado a ser verificado, i i.e., "V". Se a condição ficou eficaz e o valor “V” correspondeu ao valor do índice médio, ela retornará o índice médio de uma matriz. No início, nossa matriz tem duas metades, esquerda e direita. O esquerdo contém valores menores, enquanto o direito contém os valores maiores em comparação com o valor do índice médio. Quando o valor em um ponto médio é menor que o valor a ser pesquisado, não precisamos considerar a metade esquerda de uma matriz, porque isso conterá valores menores.

Então, estaremos atualizando nossa variável esquerda com o índice de "Mid+1". Por outro lado, se o valor médio for maior que o valor solicitado a ser verificado, precisamos ignorar a metade certa (valores maiores) de uma matriz. Portanto, a variável certa será atualizada por um novo valor, eu.e., "Mid-1". Esse processo continuará a fazer até que a esquerda de uma matriz seja igual ou menor que o ponto direito de uma matriz. Se não das condições forem satisfeitas, não encontramos o valor na matriz e retornando -1 como um índice ao método principal.

Agora, veio para a implementação da função principal (). Dentro dessa função, declaramos uma matriz chamada "A" com alguns valores inteiros. A matriz já está classificada em ordem ascendente. Em seguida, uma variável “V” foi inicializada na qual um valor inserido por um usuário será salvo. A declaração Cout diz a um usuário para inserir algum número enquanto a instrução CIN é usada para coletar a entrada do usuário e salvá -la na variável "V".

Outra variável, "n" foi definida para obter o tamanho total de uma matriz com o uso da função sizeof () na matriz "a". Outra variável, "val" foi usada para obter o índice do método de pesquisa como um valor de retorno chamando -o. A chamada de função passa a matriz A, ponto esquerdo como 0, ponto direito como número inteiro "n-1" e o valor "v" a ser pesquisado. Se o método de pesquisa retornar "-1" à variável "Val", a primeira instrução Cout será executada; Caso contrário, o segundo será executado e exibirá o índice de um valor correspondente.

Assim, o código requer a compilação primeiro. Após a primeira e a segunda execução, o usuário entrou em 14 e 19, e foi comparado com o índice 3 e 8, respectivamente, conforme exibido. Na terceira execução, não deu certo como mostrado. Então, o compilador G ++ está aqui para sua ajuda.

Exemplo 02: método recursivo

Isso foi tudo sobre o método iterativo de pesquisa binária em c++. Vamos ter um segundo método para fazer uma pesquisa binária em C ++, um método conhecido e recursivo. O método recursivo seria o mesmo que o método iterativo, mas chama recursivamente seu método de pesquisa binária. Estaremos explicando com o código. Portanto, abra o mesmo arquivo e atualize o método de pesquisa. Usamos o mesmo enquanto o loop dentro do método de pesquisa com as mesmas condições nele, eu.e., declarações if-else, instrução IF única e cálculo de ponto médio.

A única mudança foi realizada na declaração if-else da função de pesquisa. Quando o valor do ponto médio é maior que o valor a ser pesquisado no método de pesquisa, e a condição é satisfeita, ele chamará o mesmo método de pesquisa com pouca mudança em seus parâmetros. Todos os parâmetros serão os mesmos, exceto o valor do ponto "certo", que agora é o índice "Mid-1". Por outro lado, quando um valor de ponto médio é menor que o valor a ser pesquisado, eu.e., "V" e a condição não está satisfeita, chamará a mesma função com uma pequena mudança em seu argumento de parâmetro "esquerda". O ponto esquerdo será atualizado com o índice de "Mid+1" agora.

Você pode ver a função principal () é 100% a mesma que o exemplo iterativo acima, e não tem uma única mudança de caractere.

Primeiro, compile este código recursivo atualizado com G ++ e depois execute -o. Após a primeira execução, ele retorna 3 como resultado ao valor 14, enquanto nenhum índice foi encontrado até agora para o valor 24 após a segunda execução.

Conclusão:

O artigo inteiro acima é sobre pesquisa binária em c++. A pesquisa binária foi descoberta e explicada bem com dois métodos diferentes, eu.e., iterativo e recursivo. Todos os exemplos implementados e demonstrados são bastante simples de fazer e fáceis de entender, pois cada etapa foi explicada brevemente. Portanto, estamos tendo grandes esperanças de que este artigo seja igualmente benéfico para um usuário ingênuo, novo e especialista.