• Home
  • Chat IA
  • Guru IA
  • Tutores
  • Central de ajuda
Home
Chat IA
Guru IA
Tutores

·

Matemática Aplicada a Negócios ·

Introdução à Computação 2

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

54

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Slide - Método da Bolha - Bubblesort e Sharkesort - 2023-2

113

Slide - Método da Bolha - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Slide - Ordenação por Seleção - 2023-2

25

Slide - Ordenação por Seleção - 2023-2

Introdução à Computação 2

USP

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

54

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Prática 4 - Recursão - Introdução à Computação 2 - 2023-2

4

Prática 4 - Recursão - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Estruturas e Ponteiros em C e C - Introdução à Computação 2 - 2023-2

48

Slide - Estruturas e Ponteiros em C e C - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Prática 2 - Análise por Operações Primitivas - Introdução à Computação 2 - 2023-2

3

Prática 2 - Análise por Operações Primitivas - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Sub-algoritmos em C

61

Slide - Sub-algoritmos em C

Introdução à Computação 2

USP

Slide - Complexidade de Algoritmos - Introdução à Computação 2 - 2023-2

21

Slide - Complexidade de Algoritmos - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Algoritmos de Ordenação - 2023-2

92

Slide - Algoritmos de Ordenação - 2023-2

Introdução à Computação 2

USP

Texto de pré-visualização

1 Introdução à Computação II – 5954006 Introdução à Computação II 5954006 4. Algoritmos de Busca em Vetores Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 2 Introdução à Computação II – 5954006 4.1. Introdução 4.2. Busca Linear 4.2.1. Busca Linear Padrão 4.2.2. Busca Linear com Sentinela 4.3. Busca Binária 4.3.1. Busca Binária Padrão 4.3.2. Busca Binária Rápida Principais Tópicos 3 Introdução à Computação II – 5954006 • Existem diversas aplicações computacionais que devem lidar com uma grande quantidade de dados  Exemplo: processamento de dados provenientes de transações bancárias • Busca (ou pesquisa) visa  Recuperar informação a partir de uma massa de informações previamente armazenada Encontrar uma ou mais ocorrências de registros com chaves iguais às chaves de busca 4.1. Introdução 4 Introdução à Computação II – 5954006 • O conjunto de registros é normalmente chamado de  Tabela Termo geralmente associado a entidades de vida curta – Exemplo: dados na memória principal durante a execução de um problema  Arquivo Termo geralmente associado a entidades de vida longa – Exemplo: dados armazenados na memória secundária 4.1. Introdução 5 Introdução à Computação II – 5954006 • Nos processos de busca tratados neste curso, deve-se buscar um registro (estrutura em C) composto de  Dados Informações  Chave 4.1. Introdução ... typedef struct { tipo chave; // chave de busca ... // demais informações } item ; ... item a[N]; ... 6 Introdução à Computação II – 5954006 4.1. Introdução • No processo de busca, o conjunto de dados, entre os quais o registro que deve ser procurado, possui tamanho fixo  Exemplo item a[N]; • Objetivo da busca  Encontrar o item com a chave igual à chave de busca dada Exemplo – a[i].chave == chave_de_busca 7 Introdução à Computação II – 5954006 • Por simplicidade, considere que  o tipo item é um vetor de inteiros no qual os elementos são as chaves  a chave de busca é um inteiro  N é uma constante que indica o número de elementos do vetor • Assim, objetivo da busca se resume a encontrar o índice i do elemento vetor[i] que é igual à chave de busca chave_de_busca 4.1. Introdução 8 Introdução à Computação II – 5954006 Exemplo 4.1. Dado um vetor a, buscar o índice do elemento igual à chave x  Busca de x = 19, retorna i = 5  Busca de x = 45, retorna i = 0  Busca de x = 8, retorna i = 6  Busca de x = 43, retorna i = 3 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a 4.1. Introdução 9 Introdução à Computação II – 5954006 Exemplo 4.1. Dado um vetor a, buscar o índice do elemento igual à chave x  Busca de x = 81? Depende da implementação Pode, por exemplo, retornar i = -1 se a busca não teve êxito 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a 4.1. Introdução 10 Introdução à Computação II – 5954006 4.2.1. Busca Linear Padrão • Busca Linear ou Busca Seqüencial  Utilizada quando não há informações adicionais sobre os dados a serem pesquisados  A busca linear termina quando for satisfeita uma das seguintes condições 1. O elemento é encontrado 2. Todo o vetor foi analisado  Exemplo de algoritmo de busca linear ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 11 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 4.2.1. Busca Linear Padrão 12 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... V V 4.2.1. Busca Linear Padrão 13 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 4.2.1. Busca Linear Padrão 14 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... V V 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 1 i 4.2.1. Busca Linear Padrão 15 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 2 i 4.2.1. Busca Linear Padrão 16 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 • Término do laço: Se i ≠ N então x foi encontrado na posição i do vetor ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 2 i V F 4.2.1. Busca Linear Padrão 17 Introdução à Computação II – 5954006 • Análise do algoritmo  Em média são efetuadas N/2 comparações de chaves – quando a chave existe na tabela e chaves podem ocorrer com mesma probabilidade  Melhor caso 1 comparação, i.e., O(1)  Pior caso requer N comparações de chaves A complexidade de tempo é O(N) 4.2.1. Busca Linear Padrão 18 Introdução à Computação II – 5954006 4.2.2. Busca Linear com Sentinela • Simplificação da expressão Booleana  Introdução de um elemento adicional no final do vetor Um elemento é sempre retornado  Retira necessidade de verificar se chegou no fim do vetor 19 Introdução à Computação II – 5954006 • Exemplo de algoritmo de busca linear com sentinela  Ao final do laço, i = N implica que o elemento com chave x não foi encontrado 4.2.2. Busca Linear com Sentinela ... declare a[N+1] ... i  0 a[N]  x enquanto ( a[i] ≠ x ) i  i + 1 fim enquanto ... 20 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 4.2.2. Busca Linear com Sentinela 21 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela 22 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela V 23 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela 24 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela F 25 Introdução à Computação II – 5954006 4.2.2. Busca Linear com Sentinela • Análise do algoritmo  Em média são efetuadas (N+1)/2 comparações de chaves – quando a chave existe na tabela e chaves podem ocorrer com mesma probabilidade  Melhor caso 1 comparação, i.e., O(1)  Pior caso requer N+1 comparações de chaves A complexidade de tempo é O(N) – Entretanto, o número de operações primitivas para a versão com Sentinela é menor que a versão padrão para N acima de uma determinada constante 27 Introdução à Computação II – 5954006 4.3. Busca Binária • Não é possível acelerar a busca sem que se disponha de maiores informações sobre a organização do vetor  Para o caso geral, o problema de busca tem complexidade de tempo O(N) • No entanto, é possível alcançar uma eficiência maior se informações adicionais sobre o vetor estiverem disponíveis • Por exemplo, considere que os as chaves estejam ordenadas  Exemplo: de forma crescente, ou seja a[0] ≤ a[1] ≤ … ≤ a[N-1] 28 Introdução à Computação II – 5954006 • Neste caso, pode se implementar a busca binária • A idéia principal é comparar a chave de um registro qualquer da seqüência (por exemplo, um registro no meio da seqüência) com a chave de busca x • Se chave de busca for  igual à chave do registro  a busca termina  maior que a chave do registro, conclui-se que todos os elementos com índices menores ou iguais ao índice do registro podem ser eliminados nos próximos passos  menor que a chave do registro, todos aqueles elementos com índices maiores ou iguais ao índice do registro podem ser eliminados nos próximos passos 4.3. Busca Binária 29 Introdução à Computação II – 5954006 • Embora a escolha do ponto do início da busca (m no algoritmo exemplificado) possa ser arbitrária, já que o algoritmo funciona independentemente dele, o valor desta variável influencia diretamente a eficiência do algoritmo • Para a solução ótima, deve-se eliminar o maior número possível de elementos em futuras buscas  Assim, a solução ótima é escolher um elemento no meio (ou mais próximo possível do meio) da seqüência 4.3.1. Busca Binária Padrão 30 Introdução à Computação II – 5954006 Exemplo 4.4. Simule o processo de busca binária para x = 78 4.3.1. Busca Binária Padrão 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 31 Introdução à Computação II – 5954006 4.3.1. Busca Binária Padrão • Exemplo de algoritmo de busca binária ... L  0 R  N - 1 sucesso  0 enquanto ( ( L ≤ R ) e ( sucesso = 0 ) ) m  floor( (R+L)/2 ) se ( a[m] = x ) sucesso  1 senão se ( a[m] < x ) L  m + 1 senão R  m – 1 fim se fim se fim enquanto ... 32 Introdução à Computação II – 5954006 Exemplo 4.5. Simule o processo de busca binária para x = 7 4.3.1. Busca Binária Padrão 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 33 Introdução à Computação II – 5954006 • A eficiência pode ser ligeiramente melhorada se o sucesso (término) da busca não for testado em todo loop  Lembre-se que sucesso ocorre apenas uma vez em todo o processo • Além disso, pode-se abandonar a meta de terminar a busca no instante exato em que for encontrado o elemento pesquisado  Isso parece pouco inteligente à primeira vista, mas observando-se mais a fundo, pode-se constatar que o ganho em eficiência em cada passo será maior do que a perda ocasionada pela comparação de alguns poucos elementos adicionais 4.3.2. Busca Binária Rápida 34 Introdução à Computação II – 5954006 • Exemplo de algoritmo de busca binária rápida  Se ao término do loop, a condição a[R] = x for satisfeita, então o elemento procurado foi encontrado na posição R  Caso contrário, o elemento não foi encontrado 4.3.2. Busca Binária Rápida ... L  0 R  N - 1 enquanto ( L < R ) m  floor( (R+L)/2 ) se ( a[m] < x ) L  m + 1 senão R  m fim se fim enquanto ... 35 Introdução à Computação II – 5954006 Exemplo 4.6. Simule o processo de busca binária rápida para x = 78 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 4.3.2. Busca Binária Rápida 36 Introdução à Computação II – 5954006 • Análise do número de comparações entre chaves  No início, o número de elementos a ser examinado é N . Dividindo por dois até que reste apenas um elemento, teremos 1=N/2p sendo p o número de divisões  O número de comparações de chaves em um conjunto com N registros é aproximadamente log2(N) 4.3.2. Busca Binária Rápida 37 Introdução à Computação II – 5954006 • Análise  O pior caso requer log2 N comparações Portanto a complexidade de tempo é O(log2 N) N Nº Comparações (pior caso) 8 3 128 7 1.024 10 32.768 15 1.048.576 20 1080 266 4.3.2. Busca Binária Rápida 38 Introdução à Computação II – 5954006 • Análise  Considerando os algoritmos de busca vistos, a tabela seguinte mostra a ordem de grandeza dos números mínimo (Cmín), médio (Cméd) e máximo (Cmáx) de comparações de chaves Algoritmo Cmín Cméd Cmáx Busca Linear O (1) O (N) O (N) Busca Linear com Sentinela O (1) O (N) O (N) Busca Binária O (1) O (log2N) O (log2N) Busca Binária Rápida O (log2N) O (log2N) O (log2N) 4.3.2. Busca Binária Rápida 39 Introdução à Computação II – 5954006 Busca Binária Busca Linear Número de elementos (N) Número de comparações 4.3.2. Busca Binária Rápida

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

54

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Slide - Método da Bolha - Bubblesort e Sharkesort - 2023-2

113

Slide - Método da Bolha - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Slide - Ordenação por Seleção - 2023-2

25

Slide - Ordenação por Seleção - 2023-2

Introdução à Computação 2

USP

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

54

Slide - Ordenação Por Fusão - Bubblesort e Sharkesort - 2023-2

Introdução à Computação 2

USP

Prática 4 - Recursão - Introdução à Computação 2 - 2023-2

4

Prática 4 - Recursão - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Estruturas e Ponteiros em C e C - Introdução à Computação 2 - 2023-2

48

Slide - Estruturas e Ponteiros em C e C - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Prática 2 - Análise por Operações Primitivas - Introdução à Computação 2 - 2023-2

3

Prática 2 - Análise por Operações Primitivas - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Sub-algoritmos em C

61

Slide - Sub-algoritmos em C

Introdução à Computação 2

USP

Slide - Complexidade de Algoritmos - Introdução à Computação 2 - 2023-2

21

Slide - Complexidade de Algoritmos - Introdução à Computação 2 - 2023-2

Introdução à Computação 2

USP

Slide - Algoritmos de Ordenação - 2023-2

92

Slide - Algoritmos de Ordenação - 2023-2

Introdução à Computação 2

USP

Texto de pré-visualização

1 Introdução à Computação II – 5954006 Introdução à Computação II 5954006 4. Algoritmos de Busca em Vetores Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 2 Introdução à Computação II – 5954006 4.1. Introdução 4.2. Busca Linear 4.2.1. Busca Linear Padrão 4.2.2. Busca Linear com Sentinela 4.3. Busca Binária 4.3.1. Busca Binária Padrão 4.3.2. Busca Binária Rápida Principais Tópicos 3 Introdução à Computação II – 5954006 • Existem diversas aplicações computacionais que devem lidar com uma grande quantidade de dados  Exemplo: processamento de dados provenientes de transações bancárias • Busca (ou pesquisa) visa  Recuperar informação a partir de uma massa de informações previamente armazenada Encontrar uma ou mais ocorrências de registros com chaves iguais às chaves de busca 4.1. Introdução 4 Introdução à Computação II – 5954006 • O conjunto de registros é normalmente chamado de  Tabela Termo geralmente associado a entidades de vida curta – Exemplo: dados na memória principal durante a execução de um problema  Arquivo Termo geralmente associado a entidades de vida longa – Exemplo: dados armazenados na memória secundária 4.1. Introdução 5 Introdução à Computação II – 5954006 • Nos processos de busca tratados neste curso, deve-se buscar um registro (estrutura em C) composto de  Dados Informações  Chave 4.1. Introdução ... typedef struct { tipo chave; // chave de busca ... // demais informações } item ; ... item a[N]; ... 6 Introdução à Computação II – 5954006 4.1. Introdução • No processo de busca, o conjunto de dados, entre os quais o registro que deve ser procurado, possui tamanho fixo  Exemplo item a[N]; • Objetivo da busca  Encontrar o item com a chave igual à chave de busca dada Exemplo – a[i].chave == chave_de_busca 7 Introdução à Computação II – 5954006 • Por simplicidade, considere que  o tipo item é um vetor de inteiros no qual os elementos são as chaves  a chave de busca é um inteiro  N é uma constante que indica o número de elementos do vetor • Assim, objetivo da busca se resume a encontrar o índice i do elemento vetor[i] que é igual à chave de busca chave_de_busca 4.1. Introdução 8 Introdução à Computação II – 5954006 Exemplo 4.1. Dado um vetor a, buscar o índice do elemento igual à chave x  Busca de x = 19, retorna i = 5  Busca de x = 45, retorna i = 0  Busca de x = 8, retorna i = 6  Busca de x = 43, retorna i = 3 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a 4.1. Introdução 9 Introdução à Computação II – 5954006 Exemplo 4.1. Dado um vetor a, buscar o índice do elemento igual à chave x  Busca de x = 81? Depende da implementação Pode, por exemplo, retornar i = -1 se a busca não teve êxito 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a 4.1. Introdução 10 Introdução à Computação II – 5954006 4.2.1. Busca Linear Padrão • Busca Linear ou Busca Seqüencial  Utilizada quando não há informações adicionais sobre os dados a serem pesquisados  A busca linear termina quando for satisfeita uma das seguintes condições 1. O elemento é encontrado 2. Todo o vetor foi analisado  Exemplo de algoritmo de busca linear ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 11 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 4.2.1. Busca Linear Padrão 12 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... V V 4.2.1. Busca Linear Padrão 13 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 4.2.1. Busca Linear Padrão 14 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... V V 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 1 i 4.2.1. Busca Linear Padrão 15 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 2 i 4.2.1. Busca Linear Padrão 16 Introdução à Computação II – 5954006 Exemplo 4.2. Busca de x = 12 • Término do laço: Se i ≠ N então x foi encontrado na posição i do vetor ... i  0 enquanto ( i < N e a[i] ≠ x ) i  i + 1 fim enquanto ... 0 1 2 3 4 5 6 7 45 56 12 43 95 19 8 67 a i 8 N 2 i V F 4.2.1. Busca Linear Padrão 17 Introdução à Computação II – 5954006 • Análise do algoritmo  Em média são efetuadas N/2 comparações de chaves – quando a chave existe na tabela e chaves podem ocorrer com mesma probabilidade  Melhor caso 1 comparação, i.e., O(1)  Pior caso requer N comparações de chaves A complexidade de tempo é O(N) 4.2.1. Busca Linear Padrão 18 Introdução à Computação II – 5954006 4.2.2. Busca Linear com Sentinela • Simplificação da expressão Booleana  Introdução de um elemento adicional no final do vetor Um elemento é sempre retornado  Retira necessidade de verificar se chegou no fim do vetor 19 Introdução à Computação II – 5954006 • Exemplo de algoritmo de busca linear com sentinela  Ao final do laço, i = N implica que o elemento com chave x não foi encontrado 4.2.2. Busca Linear com Sentinela ... declare a[N+1] ... i  0 a[N]  x enquanto ( a[i] ≠ x ) i  i + 1 fim enquanto ... 20 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 4.2.2. Busca Linear com Sentinela 21 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela 22 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 0 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela V 23 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela 24 Introdução à Computação II – 5954006 0 1 2 3 4 5 6 7 8 45 56 12 43 95 19 8 67 a i 8 N 1 i ... i  0 a[N]  x enquanto (a[i] ≠ x ) i  i + 1 fim enquanto ... Exemplo 4.3. Busca de x = 56 56 Sentinela 4.2.2. Busca Linear com Sentinela F 25 Introdução à Computação II – 5954006 4.2.2. Busca Linear com Sentinela • Análise do algoritmo  Em média são efetuadas (N+1)/2 comparações de chaves – quando a chave existe na tabela e chaves podem ocorrer com mesma probabilidade  Melhor caso 1 comparação, i.e., O(1)  Pior caso requer N+1 comparações de chaves A complexidade de tempo é O(N) – Entretanto, o número de operações primitivas para a versão com Sentinela é menor que a versão padrão para N acima de uma determinada constante 27 Introdução à Computação II – 5954006 4.3. Busca Binária • Não é possível acelerar a busca sem que se disponha de maiores informações sobre a organização do vetor  Para o caso geral, o problema de busca tem complexidade de tempo O(N) • No entanto, é possível alcançar uma eficiência maior se informações adicionais sobre o vetor estiverem disponíveis • Por exemplo, considere que os as chaves estejam ordenadas  Exemplo: de forma crescente, ou seja a[0] ≤ a[1] ≤ … ≤ a[N-1] 28 Introdução à Computação II – 5954006 • Neste caso, pode se implementar a busca binária • A idéia principal é comparar a chave de um registro qualquer da seqüência (por exemplo, um registro no meio da seqüência) com a chave de busca x • Se chave de busca for  igual à chave do registro  a busca termina  maior que a chave do registro, conclui-se que todos os elementos com índices menores ou iguais ao índice do registro podem ser eliminados nos próximos passos  menor que a chave do registro, todos aqueles elementos com índices maiores ou iguais ao índice do registro podem ser eliminados nos próximos passos 4.3. Busca Binária 29 Introdução à Computação II – 5954006 • Embora a escolha do ponto do início da busca (m no algoritmo exemplificado) possa ser arbitrária, já que o algoritmo funciona independentemente dele, o valor desta variável influencia diretamente a eficiência do algoritmo • Para a solução ótima, deve-se eliminar o maior número possível de elementos em futuras buscas  Assim, a solução ótima é escolher um elemento no meio (ou mais próximo possível do meio) da seqüência 4.3.1. Busca Binária Padrão 30 Introdução à Computação II – 5954006 Exemplo 4.4. Simule o processo de busca binária para x = 78 4.3.1. Busca Binária Padrão 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 31 Introdução à Computação II – 5954006 4.3.1. Busca Binária Padrão • Exemplo de algoritmo de busca binária ... L  0 R  N - 1 sucesso  0 enquanto ( ( L ≤ R ) e ( sucesso = 0 ) ) m  floor( (R+L)/2 ) se ( a[m] = x ) sucesso  1 senão se ( a[m] < x ) L  m + 1 senão R  m – 1 fim se fim se fim enquanto ... 32 Introdução à Computação II – 5954006 Exemplo 4.5. Simule o processo de busca binária para x = 7 4.3.1. Busca Binária Padrão 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 33 Introdução à Computação II – 5954006 • A eficiência pode ser ligeiramente melhorada se o sucesso (término) da busca não for testado em todo loop  Lembre-se que sucesso ocorre apenas uma vez em todo o processo • Além disso, pode-se abandonar a meta de terminar a busca no instante exato em que for encontrado o elemento pesquisado  Isso parece pouco inteligente à primeira vista, mas observando-se mais a fundo, pode-se constatar que o ganho em eficiência em cada passo será maior do que a perda ocasionada pela comparação de alguns poucos elementos adicionais 4.3.2. Busca Binária Rápida 34 Introdução à Computação II – 5954006 • Exemplo de algoritmo de busca binária rápida  Se ao término do loop, a condição a[R] = x for satisfeita, então o elemento procurado foi encontrado na posição R  Caso contrário, o elemento não foi encontrado 4.3.2. Busca Binária Rápida ... L  0 R  N - 1 enquanto ( L < R ) m  floor( (R+L)/2 ) se ( a[m] < x ) L  m + 1 senão R  m fim se fim enquanto ... 35 Introdução à Computação II – 5954006 Exemplo 4.6. Simule o processo de busca binária rápida para x = 78 0 1 2 3 4 5 6 7 5 6 12 23 45 59 78 97 a 4.3.2. Busca Binária Rápida 36 Introdução à Computação II – 5954006 • Análise do número de comparações entre chaves  No início, o número de elementos a ser examinado é N . Dividindo por dois até que reste apenas um elemento, teremos 1=N/2p sendo p o número de divisões  O número de comparações de chaves em um conjunto com N registros é aproximadamente log2(N) 4.3.2. Busca Binária Rápida 37 Introdução à Computação II – 5954006 • Análise  O pior caso requer log2 N comparações Portanto a complexidade de tempo é O(log2 N) N Nº Comparações (pior caso) 8 3 128 7 1.024 10 32.768 15 1.048.576 20 1080 266 4.3.2. Busca Binária Rápida 38 Introdução à Computação II – 5954006 • Análise  Considerando os algoritmos de busca vistos, a tabela seguinte mostra a ordem de grandeza dos números mínimo (Cmín), médio (Cméd) e máximo (Cmáx) de comparações de chaves Algoritmo Cmín Cméd Cmáx Busca Linear O (1) O (N) O (N) Busca Linear com Sentinela O (1) O (N) O (N) Busca Binária O (1) O (log2N) O (log2N) Busca Binária Rápida O (log2N) O (log2N) O (log2N) 4.3.2. Busca Binária Rápida 39 Introdução à Computação II – 5954006 Busca Binária Busca Linear Número de elementos (N) Número de comparações 4.3.2. Busca Binária Rápida

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Central de ajuda Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2025 Meu Guru®