Informática – Parte 17 Prof. Márcio Hunecke · 8 2. (2014 – FCC – TRT – 16ª REGIÃO (MA)...

14
Escriturário Informática – Parte 17 Prof. Márcio Hunecke

Transcript of Informática – Parte 17 Prof. Márcio Hunecke · 8 2. (2014 – FCC – TRT – 16ª REGIÃO (MA)...

Escriturário

Informática – Parte 17

Prof. Márcio Hunecke

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.

www.acasadoconcurseiro.com.br14

Gabarito: 1. B 2. E 3. A 4. Certo 5. C 6. A 7. B 8. E 9. C 10. B 11. B 12. D 13. B