Informática – Parte 17 Prof. Márcio Hunecke · 8 2. (2014 – FCC – TRT – 16ª REGIÃO (MA)...
Transcript of Informática – Parte 17 Prof. Márcio Hunecke · 8 2. (2014 – FCC – TRT – 16ª REGIÃO (MA)...
www.acasadoconcurseiro.com.br 3
Informática
BUSCA SEQUENCIAL E BUSCA BINÁRIA SOBRE ARRAYS
Busca sequencial em vetores não ordenados
O termo busca sequencial (ou busca linear) expressa um tipo de pesquisa em vetores ou listas de modo sequencial (elemento por elemento), de modo que a função do tempo em relação ao número de elementos é linear, ou seja, cresce proporcionalmente.
No melhor caso, o elemento a ser buscado é encontrado logo na primeira tentativa da busca. No pior caso, o elemento a ser buscado encontra-se na última posição e são feitas N compa-rações, sendo N o número total de elementos. No caso médio, o elemento é encontrado após (N+1)/2 comparações.
Código Java utilizado para fazer buscas sequenciais em vetores não ordenados
O programa busca um determinado elemento no arranjo, passando por todas as posições do arranjo e tem duas condições para parar:
• Elemento encontrado → saída é o índice do elemento
• Busca chegou ao fim → índice == tamanho do vetor, então saída é -1 (elemento não encon-trado).
www.acasadoconcurseiro.com.br4
Busca sequencial em vetores ordenados
A única diferença é que a busca pode ser interrompida quando o valor do elemento do vetor é maior que o valor procurado.
Código Java utilizado para fazer buscas sequenciais em vetores ordenados
O programa busca um determinado elemento em um arranjo, passando por todas as posições até encontrar um elemento com valor maior. Neste cenário a tendência é de gerar menos com-parações. Três condições para parar:
• Elemento encontrado → saída é o índice do elemento
• Elemento é maior que o buscado → saída é -1 (valor não encontrado)
• Busca chegou ao fim → índice == tamanho do vetor, então saída é -1 (elemento não encontrado).
Busca binária em vetores ordenados
A pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é um algoritmo de busca em vetores que segue o paradigma de divisão e conquista. Ela parte do pressuposto de que o VETOR ESTÁ ORDENADO e realiza sucessivas divisões do espaço de busca comparan-do o elemento buscado com o elemento no meio do vetor. Se o elemento do meio do vetor for o elemento buscado, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior (ou direita) do vetor. E finalmente, se o elemento do meio vier depois do elemento buscado, a busca continua na metade anterior (ou esquerda) do vetor.
A quantidade de comparações e muito menor que na busca sequencial, mas obrigatoriamente o vetor precisa estar ordenado.
A quantidade de comparações é o resultado do logaritmo de N na base 2 mais 1, ou seja, log2(n) + 1. Exemplo: Para um vetor com um milhão de elementos, são necessárias 21 comparações, no máximo.
Esse modelo de busca é muito utilizado com vetores que sofrem poucas alterações.
Banco do Brasil - TI (Escriturário) – Informática – Márcio Henecke
www.acasadoconcurseiro.com.br 5
Programa genérico utilizado para fazer buscas binárias em vetores ordenados
O programa verifica se o elemento procurado é o do meio do arranjo, se não for, verifica se ele é maior. Se for maior, repete a busca na metade direita do arranjo e assim sucessivamente. Senão for maior, repete a busca na metade esquerda do arranjo e assim sucessivamente. O pro-grama é finalizado mostrando o índice do elemento procurado ou mostrando -1, se o elemento não for localizado.
www.acasadoconcurseiro.com.br 7
Questões
1. (2015 – COMPERVE – UFRN – Técnico de Tecnologia da Informação)
Considere a seguinte função busca escrita em linguagem C:
Essa função implementa o algoritmo de busca
a) sequencial recursiva. b) binária iterativa. c) binária recursiva. d) sequencial iterativa.
www.acasadoconcurseiro.com.br8
2. (2014 – FCC – TRT – 16ª REGIÃO (MA) – Analista Judiciário – Tecnologia da Informação)
Considere o código-fonte a seguir:
É correto afirmar que a classe Java apresentada implementa uma
a) pesquisa linear. b) árvore binária. c) pilha. d) fila. e) pesquisa binária.
www.acasadoconcurseiro.com.br 9
Banco do Brasil - TI (Escriturário) – Informática – Márcio Henecke
3. (2013 – FCC – TRT – 12ª Região (SC) – Técnico Judiciário – Tecnologia da Informação)
O código-fonte apresentado:
a) faz uma pesquisa sequencial no vetor. b) está incorreto, pois para retornar o tamanho do vetor utiliza-se vet.size() e não vet.length. c) sempre exibe a mensagem dizendo que o valor lido não foi encontrado no vetor. d) localiza o valor digitado somente se os valores contidos no vetor estiverem em ordem
crescente. e) faz uma pesquisa binária no vetor.
4. (2012 – CESPE – Banco da Amazônia – Técnico Científico – Administração de Dados)
A busca binária é realizada em um grupo de dados previamente ordenado.
( ) Certo ( ) Errado
www.acasadoconcurseiro.com.br10
5. (2010 – AOCP – Colégio Pedro II – Técnico de Tecnologia da Informação)
A busca binária é conhecida também como busca logarítmica. Sobre a busca binária, assinale a alternativa INCORRETA.
a) Para um conjunto de 15 elementos, ocorreria, no mínimo, 1 comparação e, no máximo, 4 comparações.
b) Quando comparada com a busca sequencial, a busca binária, há uma redução logarítmica dos elementos a serem pesquisados.
c) Em uma sequência ordenada de forma crescente, caso o elemento procurado seja menor que o elemento do meio, continua-se a busca com o subconjunto da direita. Em caso con-trário, com o subconjunto da esquerda.
d) Considerando uma sequência qualquer, deve-se dividir o conjunto ao meio e verificar se o elemento procurado é igual ao elemento central.
e) Se o elemento procurado estiver entre os últimos ou não estiver no conjunto, a busca line-ar poderá ser mais lenta do que a busca binária.
6. (2017 – FUNDEP (Gestão de Concursos) – UFVJM-MG – Analista de Tecnologia da Informação)
Analise o trecho de código a seguir.
Avariável x representa o elemento de referência passado como parâmetro
A qual algoritmo esse código pertence?
a) Busca binária b) Ordenação heapsort c) Busca sequencial d) Ordenação quicksort
www.acasadoconcurseiro.com.br 11
Banco do Brasil - TI (Escriturário) – Informática – Márcio Henecke
7. (2017 – CESPE – TRT – 7ª Região (CE) – Técnico Judiciário – Tecnologia da Informação)
Considere que um algoritmo de pesquisa, em um arquivo previamente ordenado, é caracteriza-do por realizar comparação de chaves e sucessivas divisões no espaço de busca até encontrar o termo pesquisado ou até haver um único registro. Trata-se de um algoritmo de
a) pesquisa por interpolação. b) pesquisa binária. c) pesquisa sequencial. d) árvore de busca binária.
8. (2012 – FCC – TJ-RJ – Analista Judiciário – Análise de Sistemas)
O algoritmo conhecido como busca binária é um algoritmo de desempenho ótimo para encon-trar a posição de um item em
a) uma árvore B. b) uma lista ligada ordenada. c) uma árvore de busca binária. d) um heap binário. e) um vetor ordenado.
9. (2018 – CESGRANRIO – Petrobras – Engenheiro de Equipamentos Júnior – Eletrônica)
A função a seguir implementa um algoritmo de busca binária sobre um vetor de inteiros ordenado de modo ascendente.
Essa função recebe como parâmetros um vetor (vet), o elemento que se deseja procurar no vetor (elem), o índice do primeiro elemento do vetor (ini) e o índice do último elemento do vetor (fim). O comando System.out.println(vet[m]) exibe no console o valor do elemento de índice m do vetor vet. Seja o seguinte vetor (vt) de inteiros:
www.acasadoconcurseiro.com.br12
Suponha que a função busca seja chamada por meio do seguinte comando:
busca(vt, 39, 0, 14);
Qual será o 3º valor exibido no console?
a) 65 b) 51 c) 57 d) 38 e) 27
10. (2018 – FCC – DPE-AM – Assistente Técnico de Defensoria – Programador)
Considere que na Defensoria há uma lista ordenada com o nome de 1000 cidadãos amazonen-ses. Utilizando o método de pesquisa binária para localizar o nome de um destes cidadãos, serão necessárias, no máximo,
a) 1.000 comparações. b) 10 comparações. c) 500 comparações. d 200 comparações. e) 5 comparações.
11. (2017 – CESPE – TRT – 7ª Região (CE) – Técnico Judiciário – Tecnologia da Informação)
Considere que um algoritmo de pesquisa, em um arquivo previamente ordenado, é caracteriza-do por realizar comparação de chaves e sucessivas divisões no espaço de busca até encontrar o termo pesquisado ou até haver um único registro. Trata-se de um algoritmo de
a) pesquisa por interpolação. b) pesquisa binária. c) pesquisa sequencial. d) árvore de busca binária.
www.acasadoconcurseiro.com.br 13
Banco do Brasil - TI (Escriturário) – Informática – Márcio Henecke
12. (2017 – FCC – DPE-RS – Analista – Desenvolvimento de Sistemas)
Atenção: Os programas abaixo devem ser utilizados para responder a questão,
No Programa 1, a busca pelo valor armazenado na variável elemproc
a) usa o método bubble sort para efetuar a comparação sucessiva de pares subsequentes de elementos, trocando-os de posição, se estiverem fora de ordem.
b) não apresentará resultado, pois a condição estabelecida no comando while sempre será verdadeira, gerando um laço infinito.
c) tem como base o método de seleção direta, porém, ocorrerá um erro, já que os elementos do vetor estão ordenados.
d) usa o método de pesquisa binária, normalmente mais eficiente do que o método de pesquisa linear.
e) não apresentará resultado se o elemento procurado for o 8° elemento do vetor (valor 88), á que a variável ult, que se refere ao último elemento do vetor, contém o valor 7.
13. (2017 – FGV – IBGE – Analista Censitário – Análise de Sistemas – Desenvolvimento de Aplicações)
Para poder ser aplicado, o algoritmo de pesquisa binária exige que os elementos do array:
a) sejam números; b) estejam ordenados; c) estejam representados em base múltipla de 2; d) ocupem somente as posições pares; e) não sejam repetidos.