2. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Busca sequencial
● Também conhecida como busca linear
● Realiza uma busca elemento por
elemento
● Complexidade linear:
○ O(n)
● Para vetores ordenados, há algoritmos de
busca mais eficientes
○ Busca binária
2
3. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Busca binária
● Baseada no conceito de divisão e
conquista
● Parte do pressuposto de que o vetor já
está ordenado
● Faz várias divisões no vetor comparando
o elemento buscado com o elemento no
meio do vetor
3
4. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Busca binária: funcionamento
● Considera M, o elemento no meio da lista
● Caso o elemento x buscado for igual a M, então a busca
termina pois encontramos o valor buscado
● Se M > x, então a busca continua apenas na metade do
vetor que possui elementos menores que M
● Se M < x, então a busca continua apenas na metade do
vetor que possui elementos maiores que M
4
5. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Busca binária: algoritmo em Python
5
6. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Busca binária: complexidade
● A complexidade desse algoritmo é da ordem de O(log n)
○ mais eficiente que a busca linear
○ a cada iteração metade do vetor é eliminado da busca
● Por ex.:
○ considere um vetor com 1024 elementos
○ na busca linear, todos os 1024 elementos devem ser testados para afirmar que o
elemento buscado não está no vetor
○ Na busca binária, o primeiro teste elimina 512 elementos, o segundo 256, o terceiro
128 e assim por diante, até que a lista contenha apenas 1 elemento.
■ Ao invés de testar 1024 elementos, apenas 10 (ou log n) elementos são
testados
6
7. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Exemplo de execução
Saída:
>> 3
>> None
7