Um problema comum consiste em procurar um elemento $x$ numa lista $L$. Existem várias situações onde este tipo de primitiva é útil. Veremos como podemos resolver este problema.

Pesquisa linear

Existe uma solução óbvia para este problema que consiste em percorrer a lista de valores comparando $x$ com os vários valores da lista $L$ até encontrar um igual ou percorrer a lista na sua totalidade.

É fácil de ver que a complexidade temporal deste método é $O(N)$.

Pesquisa binária

Se admitirmos que a lista onde estamos a procurar está ordenada, podemos melhorar a pesquisa da secção anterior. O método é análogo a como procuramos alguém numa lista de nomes ordenada (por exemplo, numa lista telefónica).

Artigo: O algoritmo de pesquisa binária

Um artigo simples sobre o algoritmo.

Como o artigo explica, este algoritmo permite encontrar elementos com uma complexidade temporal de apenas $O(\log(N))$, que, como se pode ver no artigo de análise de algoritmos, é uma grande diferença!

Aplicações

Terminamos com uma aplicação simples, mas não trivial do algoritmo.

Problema 1: Ice Cream Parlor

Problema do HackerRank, icecream-parlor - Ice Cream Parlor

Veremos no futuro como aplicar este conceito de uma forma mais genérica para resolver diferentes tipos de problema. Na verdade, este tipo de raciocínio é muito recorrente em problemas de concurso.