Centro Asociado de Asturias

CABUEÑES –GIJÓN

Febrero 1995 (2ª Semana)
Estructura de Datos y Algoritmos

1.-    El programa siguiente muestra el procedimiento en Modula-2 correspondiente a un método de clasificación directa de arreglos.

a) Deducir cuál de ellos es (inserción, selección o intercambio), explicando detalladamente el mecanismo. Utilizar para ello el siguiente arreglo inicial.

46

57

14

44

96

20

8

70

b) Realizar el análisis del programa, calculando el número de comparaciones y movimientos en el mejor y peor caso, así como el promedio.

PROCEDURE incógnita;
  VAR I,j : INTEGER;
BEGIN
  FOR i:=2 TO n DO
    a[0]:=a[I];j:=I;
    WHILE a[0]<a[j-1] DO a[j]:=a[j-1];j:=j-1; END
    a[j]:=a[0];
  END;
END incognita.

RESOLUCIÓN

Fórmulas: ,

2.-    Explicar detalladamente el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un monton “in situ” de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial:

44

55

12

42

94

18

6

67

Completar el programa siguiente (en Modula-2) para que realice el desplazamiento de Floyd de un montón.

PROCEDURE sift(L,R : index);
  VAR i,j : index;
  x :      item;
BEGIN
  i:=L;j:=2*L;x:=a[L];
  IF (j<R)& … THEN j:=j+1 END;
 
WHILE (j<=R)& … . DO
    … ; I:=j ; …;
    IF (j<R) & … THEN j:=j+1 END;
  END;
END sift.

RESOLUCIÓN

 

3.-    Definir un árbol perfectamente balanceado. Programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con n nodos y llave números enteros. Explicar detalladamente cómo se construye un árbol siguiendo las instrucciones del algoritmo. Ilustrarlo construyendo un árbol para la siguiente secuencia:

8

9

11

15

19

20

21

1

7

RESOLUCIÓN

4.-    Establecer las definiciones de las estructuras más adecuadas para implementar una secuencia FIFO mediante asignación dinámica. Implementar en Modula-2 los procedimientos meter( ) y sacar( ) que se definen sobre dicha estructura. Explicar claramente la utilización de los procedimientos Allocate y Deallocate en los procedimientos creados.

RESOLUCIÓN