









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento aborda diferentes métodos de busca em estruturas de dados, como busca sequencial e busca binária. Além disso, são apresentados algoritmos para busca em vetores, listas encadeadas e árvores de busca binária. A complexidade de cada método é discutida e exercícios em c são fornecidos para aplicação prática.
O que você vai aprender
Tipologia: Notas de estudo
1 / 17
Esta página não é visível na pré-visualização
Não perca as partes importantes!
conjunto de elementos, onde cada um é identificado
por uma chave, o objetivo da busca é localizar, nesse
conjunto, o elemento que corresponde a uma chave
específica.
empregados para se fazer busca.
dados podem tornar o processo de busca mais
eficiente
O conjunto de registros pode ser:
O conjunto de registros pode ficar:
Outra maneira de implementar o algoritmo é usar um sentinela
A[N]=x; for(i=0; x!=A[i]; i++); if (i<n) return(i); /chave encontrada/ else return(-1); /sentinela encontrado/**
Escrever em C a sub-rotina de busca de um elemento em uma lista encadeada
apareça em qualquer posição da tabela, em média: (n+1)/2 comparações
Para aumentar a eficiência
registros mais acessados sejam deslocados para o início
Busca-se por 25
Em cada passo, o tamanho do arranjo em que se busca é dividido por 2
low mid high
low mid high
key < item[mid]
key > item[mid]
low high mid
low mid high
key = item[mid]
N itens
~N/2 itens
~N/4 itens
Escrever em C uma sub-rotina de busca binária por um elemento em um arranjo ordenado
Bin-Search(collection c , low , high , k )
int mid ;
if low > high
then return NIL;
mid = ( high + low )/2;
if k = key [ mid ]
then return key [ mid ]; else if k < key [ mid ] then return Bin_search( c , low , mid -1, k ); else return Bin_search( c , mid +1, high , k );
Suponho que x é um nó da arvore de busca binária, para qualquer nó y ,
se y está na sub-arvore esquerda do x , então key [ y ] ≤ key [ x ].
Se y está na sub-arvore direita do x , então key [ x ] ≤ key [ y ].
Para encontrar a chave 13 na arvore, seguimos o caminho 15 → 6 → 7 → 13
Tree-Search( x , k ) if x = NIL or k = key[ x ] then return x if k < key [ x ] then return Tree-Search( left [ x ], k ) else return Tree-Search( right [ x ], k )
Iterative-Tree-Search( x , k ) while x ≠ NIL and k ≠ key[ x ] do if k < key [ x ] then x ← left [ x ] else x ← right [ x ] return x
Algoritmo Recursivo
Algoritmo Iterativo
Tree-Minimum( x ) while left [ x ] ≠ NIL do x ← left [ x ] return x
Tree-Maximum( x ) while right [ x ] ≠ NIL do x ← right [ x ] return x
Tree-Successor( x ) if right [ x ] ≠ NIL then return Tree-Minimum( right [ x ]) y ← p [ x ] while y ≠ NIL and x = right [ p [ x ]] do x ← y y ← p [ y ] return y
Escreva o algoritmo de busca do valor predecessor de um nó x em uma arvore de busca binária.
Tree-Insert( T , z ) y ← NIL x ← root [ T ] while x ≠ NIL do y ← x if key [ z ] < key [ x ] then x ← left [ x ] else x ← right [ x ] p [ z ] ← y if y = NIL then root [ T ] ← z else if key [ z ] < key [ x ] then left [ y ] ← z else right [ y ] ← z
Inserir um nó com chave 13.
Caso 2: deletar o nó com chave 16.
z (^) 5
Caso 3: deletar o nó com chave 5.
z
y
y
z
Caso 3: deletar o nó com chave 5.