Informática Parte 17 Prof. Márcio Hunecke

Documentos relacionados
Informática Parte 18 Prof. Márcio Hunecke

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Aula 07: Algoritmos de busca e Listas encadeadas

Análise e Complexidade de Algoritmos

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

Estruturas de Dados 2

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Análise e Complexidade de Algoritmos

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

5. Algoritmos de Ordenação

Bubble Sort. Tempo total O(n 2 )

Busca em Memória Primária Estrutura de Dados II

Métodos de Ordenação

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Projeto e Análise de Algoritmos

Informática Parte 23 Prof. Márcio Hunecke

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 055/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Introdução à Ciência da Computação II

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Algoritmos de Ordenação

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

Raciocínio Lógico. Números. Professor Edgar Abreu.

Recursividade. Objetivos do módulo. O que é recursividade

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Algoritmos de Busca. Profº Carlos Alberto T. Batista

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

ALGORITMOS DE ORDENAÇÃO

Limite assintótico para a ordenação, Ordenação em tempo linear

AED2 - Aula 11 Problema da separação e quicksort

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1

Pesquisa sequencial e pesquisa binária

Complexidade de algoritmos Notação Big-O

Extra- Algoritmos de Ordenação

INF111 Programação II Aulas 11, 12, 13 Ordenação

Métodos de Ordenação Parte I

Projeto e Análise de Algoritmos

Informática Parte 4 Prof. Márcio Hunecke

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Informática Parte 21 Prof. Márcio Hunecke

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

BCC202 - Estrutura de Dados I

Informática Parte 26 Prof. Márcio Hunecke

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

Introdução à Ciência da Computação II

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Informática para concursos PLANILHAS ELETRÔNICAS FÓRMULAS

SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Projeto e Análise de Algoritmos

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008/1 2 PERÍODO MÓDULO 3 AVALIAÇÃO MP2 DATA 2/10/2008 ESTRUTURAS DE DADOS 2008/2

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Informática Parte 25 Prof. Márcio Hunecke

Análise empírica de algoritmos de ordenação

(Q1 CESGRANRIO 2010) A tabela abaixo apresenta a distribuição de frequências das idades de um grupo de crianças.

Programação de Computadores II. Cap. 17 Busca

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Transcrição:

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

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 comparaçõ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 encontrado). www.acasadoconcurseiro.com.br 3

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 comparaçõ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 comparando 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. 4 www.acasadoconcurseiro.com.br

Banco do Brasil - TI (Escriturário) Informática Márcio Henecke 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 programa é finalizado mostrando o índice do elemento procurado ou mostrando -1, se o elemento não for localizado. www.acasadoconcurseiro.com.br 5

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.br 7

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. 8 www.acasadoconcurseiro.com.br

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.br 9

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 contrá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 linear 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 10 www.acasadoconcurseiro.com.br

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, é caracterizado 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 encontrar 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.br 11

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 amazonenses. 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, é caracterizado 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. 12 www.acasadoconcurseiro.com.br

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.br 13

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 14 www.acasadoconcurseiro.com.br