Algoritmos de pesquisa

Propaganda
Algoritmos de pesquisa
1
Algoritmos de pesquisa
1. Escreva um programa que permita efectuar a pesquisa sequencial nos dados que se
encontram no ficheiro “dados2.txt”. Os dados contidos neste ficheiro devem ser guardados
num vetor em que cada componente é uma estrutura com 4 campos: NumCC, Nome, Altura
e Peso. Use para chave o campo NumCC.
2. Escreva uma função recursiva para a pesquisa binária e use-a para fazer pesquisa de dados
no ficheiro “dados2.txt”. Use para chave o campo NumCC.
3. Construa os seguintes subprogramas:
- LerVector (para inserir o tamanho de um vector de inteiros e depois construi-lo),
- OrdenarDecrescente (ordena decrescentemente um vector), e
- PesquisarElemento (determina o índice/posição de um elemento x num vector V -- se
existirem vários valores iguais a x, devolve o de menor índice/posição).
Usando estes três subprogramas, implementar um programa em C que:
a) leia/construa o vector V;
b) determine a quantidade de valores de V iguais ao menor valor de V;
c) mostre o resultado obtido.
4. Os números de Fibonacci são os inteiros positivos dados pelas seguintes expressões:
Fib(0) = 1; Fib(1) = 1; Fib(a) = Fib(j-1) + Fib(j-2), j ≥ 2
Usando estes números pode ser implementado um método de pesquisa: a pesquisa de
Fibonacci. Dado um vector X com N elementos ordenados pela chave, este algoritmo permite
pesquisar o vector pelo elemento com chave k. O elemento na posição X[0] é ignorado.
Assume-se que N + 1 = Fib(j+1) (é um número de Fibonacci). Algoritmo:
P1: [Inicialização] Fazer i = Fib(j); p = Fib(j-1) e q = Fib(j-2). (neste algoritmo p e q
serão sempre números de Fibonacci consecutivos).
P2: [Comparação] Se k < ki ir para P3. Se k > ki ir para P4. Se k = ki termina com
sucesso (resultado = i).
P3: [Diminuir i] Se q = 0 o algoritmo termina sem sucesso (resultado = -1). Senão fazer
i = i − q, aux = p, p = q e q = aux − q. Voltar a P2.
P4: [Aumentar i] Se p = 1 o algoritmo termina sem sucesso (resultado = -1). Senão fazer
i = i + q, p = p − q e q = q − p. Voltar a P2.
Implemente este método de pesquisa e teste-o com um dos ficheiros disponíveis.
5. Implemente uma agenda electrónica para manter os contactos dos seus amigos. Ofereça
serviços de ordenação dos registos por nome, por data de nascimento, por operador de
serviço telefónico (indicativo da região para números da rede fixa) e por endereço de e-mail
(nome de utilizador ou designação do domínio). Permita que o utilizador pesquise a agenda
por nome do contacto e por número de telefone.
Algoritmos e Estruturas de Dados
Algoritmos de pesquisa
2
6. Considere o seguinte algoritmo correspondente a um método de ordenação (para um vetor V
de tamanho N):
Para i desde 1 até N fazer
Para j desde (i+1) até N-1 fazer
Se (V[i] > V[j]) então
temp ← V[i];
V[i] ← V[j]
V[j] ← temp
a) Simule as duas primerias iterações do algoritmo para o seguinte exemplo:
V
9
7
2
8
10
3
V
1ª iteração
V
2ª iteração
b) Construa uma função em C que traduza este algoritmo.
Algoritmos e Estruturas de Dados
Download