Última alteração: Junho 13, 2002
Horario : Terça: 14:55 - 16:35, Quinta: 14:55 - 16:35, Sala: 2029
Professor: Nivio Ziviani
Monitora: Claudine Santos Badue
1
Trabalho Prático - 06/06/02 - 10 pontos
Data de Entrega: 28/06/02
Penalização por Atrazo: 1 ponto até 02/06/02 mais 1 ponto por dia
a seguir
PROCEDURE FazAlgo ( n : integer);
VAR i, j, k, x : integer;
BEGIN
x := 0;
FOR i := 1 TO n - 1 DO
FOR j := i + 1 TO n DO
FOR k := 1 TO j DO x := x + 1;
END;
PROCEDURE Pesquisa ( n : integer);
BEGIN
IF n > 1
THEN BEGIN
Inspecione n*n*n elementos;
Pesquisa (n/3);
END;
END;
PROCEDURE Sort ( VAR A: ARRAY[1..n] OF integer;
i, j: integer );
{ n uma potencia de 2 }
BEGIN
IF i < j
THEN BEGIN
m := (i + j - 1)/2;
Sort(A,i,m);
Sort(A,m+1,j);
Merge(A,i,m,j);
{ Merge intercala A[i..m] e A[m+1..j] em A[i..j] }
END;
END;
PROCEDURE Proc( n : integer );
BEGIN
IF n = 0 THEN RETURN 1
ELSE RETURN Proc(n-1) + Proc(n-1)
ENDE;
São dados 2n números distintos distribuídos em dois arranjos
A e B, cada um com n elementos ordenados, tal que:
e
.O problema é achar o n-ésimo maior número dentre estes 2n elementos.
Considere o algoritmo para pesquisar e inserir registros em uma árvore binária de pesquisa sem balanceamento. Devido à sua simplicidade e eficiência a árvore binária de pesquisa é considerada uma estrutura de dados muito útil. Considerando-se que a altura da árvore corresponde ao tamanho da pilha necessária para pesquisar na árvore é importante conhecer o seu valor. Assim sendo,
Utilize o procedimento Permut abaixo para obter uma permutacao randômica das chaves.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>
void IniciaRand() { /* Substituir por uma funcao que tome tempo em ms */
time_t ltime;
time(<ime);
ltime%=10000;
srand(ltime);
}
double rand0a1() {
double resultado= (double) rand()/ 0x7FFF; /* Dividir pelo maior inteiro */
if(resultado>1.0) resultado= 1.0;
return resultado;
}
void Permut( int A[], int n) {
int i,j,b;
IniciaRand(); /* Funcao que Inicia a geracao de numeros randomicos */
for(i = n-1; i>0; i --) {
j = (i * rand0a1()) +1 ;
b = A[i];
A[i] = A[j];
A[j] = b;
}
}
int main() {
unsigned int x;
int v[20];
for(x=0;x<20;x++) v[x]=x;
Permut(v,20);
for(x=0;x<20;x++) printf("%d ",v[x]);
printf("\n");
return 0;
}
Nivio Ziviani