Eu sempre ouvi dizer que a pesquisa linear é uma abordagem ingênua e a pesquisa binária é melhor do que no desempenho devido à melhor complexidade assintótica. Mas nunca entendi por que é melhor que a pesquisa linear quando a classificação é necessária antes da pesquisa binária?
A pesquisa linear é O(n)
e a pesquisa binária é O(log n)
. Essa parece ser a base para dizer que a pesquisa binária é melhor. Mas a pesquisa binária exige uma classificação, que é O(n log n)
dos melhores algoritmos. Portanto, a pesquisa binária não deve ser realmente mais rápida , pois exige classificação.
Estou lendo o CLRS, no qual o autor sugere que, na classificação por inserção, em vez de usar a abordagem de pesquisa linear ingênua, é melhor usar a pesquisa binária para encontrar o local onde o item deve ser inserido. Nesse caso, isso parece ser justificado, pois em cada iteração de loop há uma lista classificada na qual a pesquisa binária pode ser aplicada. Mas no caso geral em que não há garantia sobre o conjunto de dados em que precisamos pesquisar, a utilização da pesquisa binária não é realmente pior que a pesquisa linear devido a requisitos de classificação?
Existem considerações práticas que estou negligenciando que tornam a pesquisa binária melhor que a pesquisa linear? Ou a pesquisa binária é considerada melhor que a pesquisa linear sem considerar o tempo de computação necessário para a classificação?