Buscando um algoritmo de pesquisa binária eficiente em C
Os programadores geralmente procuram implementar algoritmos de pesquisa binária eficientes que fornecem os benefícios da complexidade do tempo logarítmico . Um requisito comum é que o algoritmo retorne um iterador apontando para o resultado da pesquisa em vez de um booleano simples indicando sua existência.
A Biblioteca Padrão C fornece std::binary_search no cabeçalho
Felizmente, existem implementações alternativas disponíveis que oferecem a funcionalidade desejada. Uma opção popular é usar um algoritmo personalizado que aproveite as funções std::lower_bound, std::upper_bound ou std::equal_range. Aqui está uma versão simplificada de tal implementação:
template
Iter binary_find(Iter begin, Iter end, T val) {
// Determine the lower bound using binary search
Iter i = std::lower_bound(begin, end, val);
// If the element is found, return the iterator to it
if (i != end && !(val Alternativamente, um std::set pode ser usado, o que garante a ordenação dos elementos e fornece o método find que retorna um iterador para o item desejado. Porém, é importante considerar se os requisitos são compatíveis com o uso de um conjunto, principalmente nos casos em que múltiplas instâncias do mesmo elemento precisam ser armazenadas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3