No pior caso, o número de acessos numa busca binária num arr...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - log2 N
Vamos entender por que a alternativa correta é a A e, em seguida, explicar por que as demais alternativas estão incorretas.
A busca binária é um algoritmo eficiente para encontrar um valor em um array ordenado. No pior caso, a busca binária acessa o array de forma logarítmica, ou seja, o número máximo de acessos é da ordem de log2 N, onde N é o número de elementos no array.
Justificativa da alternativa correta (A): A busca binária funciona dividindo o array ao meio repetidamente até encontrar o elemento desejado ou determinar que ele não está presente. A cada divisão, o tamanho do intervalo a ser pesquisado é reduzido pela metade, levando a um total de log2 N comparações no pior caso.
Por que as outras alternativas estão incorretas:
B - log2 N . N: Esta alternativa sugere que o número de acessos é proporcional a N multiplicado pelo logaritmo de N. Isso é incorreto, pois a busca binária não necessita de um número de acessos linearmente proporcional ao tamanho do array multiplicado pelo logaritmo. O número de acessos cresce apenas de forma logarítmica, não linear.
C - N: Esta alternativa sugere que o número de acessos no pior caso é linear, ou seja, igual ao tamanho do array. Isso descreve a busca sequencial, não a busca binária. Em uma busca sequencial, cada elemento seria verificado até o fim do array, resultando em um tempo de execução linear.
D - N/2: Esta alternativa sugere que o número de acessos é proporcional a metade do tamanho do array. No entanto, enquanto a busca binária reduz o intervalo a ser pesquisado pela metade a cada passo, o número total de acessos realizados no pior caso ainda é logarítmico, não linear.
E - N2: Esta alternativa sugere um crescimento quadrático no número de acessos. Esse comportamento é típico de algoritmos de força bruta ou certos algoritmos de ordenação, mas não da busca binária. A busca binária é muito mais eficiente, com um número de acessos muito menor.
Conclusão: A alternativa A é correta porque reflete precisamente a natureza logarítmica do crescimento do número máximo de acessos em uma busca binária em um array ordenado com N chaves distintas. As outras alternativas não representam adequadamente a complexidade do algoritmo de busca binária.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Chutei a de amor
gab) A
O número de acessos numa busca binária num array ordenado, com N chaves distintas, é da ordem de O(log N).
A busca binária divide o array ao meio a cada passo, reduzindo o espaço de busca pela metade. Por esse motivo, o número de acessos é logarítmico em relação ao tamanho do array. O logaritmo base 2 de N é o número de passos necessários para encontrar a chave procurada, sendo que, no pior caso, o número de acessos será log2(N).
by: chatGPT
Complementando a resposta do Luís Gustavo, o algoritmo aproveita como vantagem o fato de o array estar ordenado e o divide em dois, buscando o elemento do meio. Se o valor buscado for igual ao do elemento do meio, a pesquisa é encerrada, se for menor então a chave estará a esquerda e se for maior à direita, eliminando assim, a cada passo, a pesquisa em metade do array.
No pior caso, o número de acessos em uma busca binária em um array ordenado com N chaves distintas é da ordem de log₂(N).
A busca binária funciona dividindo o array em dois subarrays a cada iteração. Se o elemento que estamos buscando está na metade superior do array, descartamos a metade inferior. Se o elemento está na metade inferior, descartamos a metade superior.
Esse processo se repete até que o subarray que estamos examinando tenha apenas um elemento, que é o elemento que estamos buscando.
O número máximo de iterações que a busca binária pode realizar é quando o elemento que estamos buscando não está presente no array. Nesse caso, a busca binária percorrerá todo o array, descartando metade do array a cada iteração.
O número de elementos no array após cada iteração é dado pela seguinte sequência:
N, N/2, N/4, N/8, ..., 1
Essa sequência é uma progressão geométrica com razão 1/2. O número de termos nessa sequência é o número de iterações da busca binária.
A fórmula para a soma de uma progressão geométrica é:
S = a * (1 - r^n) / (1 - r)
Onde:
- S é a soma da progressão geométrica
- a é o primeiro termo
- r é a razão
- n é o número de termos
No nosso caso, a = N, r = 1/2, e n é o número de iterações.
Queremos encontrar o número de iterações, então vamos resolver a equação para n:
n = log₂(a * (1 - r) / (1 - r^S))
Substituindo os valores que conhecemos:
n = log₂(N * (1 - 1/2) / (1 - 1/2^S))
Simplificando a expressão:
n = log₂(N)
Portanto, o número máximo de iterações da busca binária é log₂(N).
Conclusão:
No pior caso, o número de acessos em uma busca binária em um array ordenado com N chaves distintas é da ordem de log₂(N). Isso significa que o número de acessos aumenta de forma logarítmica com o tamanho do array.
Exemplo:
Se o array tiver 1024 elementos, o número máximo de acessos em uma busca binária será:
log₂(1024) = 10
Isso significa que a busca binária precisará fazer no máximo 10 comparações para encontrar o elemento que está buscando, mesmo que o elemento não esteja presente no array.
gamini
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo