Vous êtes sur la page 1sur 5

UNIVERSIDAD NACIONAL DE COLOMBIA

Sede Manizales

Bladimir Patiño P. Cód: 909547

Administración de Sistemas Informáticos

Taller 1

Eduardo Villegas

Manizales 6 de Marzo de 2011


Supongamos que disponemos de la siguiente definición de tipo arreglo de datos:
TYPE vector = ARRAY [1..100] OF INTEGER;
Y suponga para todos los casos, que n siempre es un valor menor o igual a 100.
Consideramos entonces los procedimientos y funciones siguientes:

Algoritmo 1
PROCEDURE Algoritmo1 (VAR a:vector);

VAR i,j:CARDINAL;
temp:INTEGER;
BEGIN
FOR i:=1 TO n-1 DO
FOR j:=n TO i+1 BY -1 DO
IF a[j-1]>a[j] THEN
temp:=a[j-1];
a[j-1]:=a[j];
a[j]:=temp
END
END
END
END Algoritmo1;

Respuesta:

a) Analizando este algoritmo y haciendo la respectiva prueba de escritorio, se puede


ver que es un procedimiento para ordenar un vector, con un maximo de 100
numeros, en el cual en la primera iteración con toda seguridad queda el menor de
todos los elementos, cada vez que itera, trae hacia la izquierda el menor que
encuentre en cada pasada, y el ciclo lo hace cada vez una posición menos, osea
una posición mas hacia la derecha, porque se tiene la certeza de que de hay para
atrás ya estan ordenados.

b) La complejidad de este algortimo es:

VAR i,j:CARDINAL; O(1)


temp:INTEGER; O(1)
BEGIN
FOR i:=1 TO n-1 DO O(n)
FOR j:=n TO i+1 B Y -1 DO O(n) O(nEXP2)
IF a[j-1]>a[j] THEN
temp:=a[j-1]; O(1) O(n)
a[j-1]:=a[j]; O(1)
a[j]:=temp O(1)
END
END
END

Peor Caso O(nexp2): que el arreglo este ordenado al reves, es decir, que este ordenado
descendentemente.
Mejor caso Ω(nexp2): que el arreglo este ordenado ascendentemente, sin embargo solo se
ahorraria los pasos de asignación, porque de igual forma la iteración asi como la pregunta las
debe hacer.

Algoritmo 2

PROCEDURE Algoritmo2 (VAR a:vector; c:INTEGER): CARDINAL;


VAR inf,sup,i:CARDINAL;
BEGIN
inf:=1; sup:=n;
WHILE (sup>=inf) DO
i:=(inf+sup) DIV 2;
IF a[i]=c THEN RETURN i
ELSIF c<a[i] THEN sup:=i-1
ELSE inf:=i+1
END
END;
RETURN 0;
END Algoritmo2;

Respuesta:

a) Analizando este algoritmo y haciendo la respectiva prueba de escritorio, se puede


ver que es un procedimiento para buscar en un vector, un número dado, la forma
de la búsqueda es de forma binaria, si encuentra el valor que se esta buscando
devuelve la posición en donde se encuentra en el vector, y en caso que no
encuentre el valor devuelve un cero. (en la entrada de los parametros debe entrar
el tamaño del vector para que funcione, en este caso es n).

b) La complejidad de este algortimo es:

PROCEDURE Algoritmo2 (VAR a:vector;n: INTEGER; c:INTEGER): CARDINAL;


VAR inf,sup,i:CARDINAL; O(1)
BEGIN
inf:=1; sup:=n; O(1)
WHILE (sup>=inf) DO O(log2 n)
i:=(inf+sup) DIV 2; O(1)
IF a[i]=c THEN RETURN i O(1) O(log2 n) O(log2 n)
ELSIF c<a[i] THEN sup:=i-1 O(1)
ELSE inf:=i+1 O(1)
END
END;
RETURN 0;
END Algoritmo2;

Peor caso O(log2(n)): que el valor no este en el arreglo, o quiza algo que pueda pasar, que el
arreglo que llegue, este deornedado en cuyo caso el algoritmo no funcionaria bien.

Mejor caso Ω(log2(n)) : ya que como es un algoritmo muy eficaz, en cuanto a la busqueda, de
un valor, el número de iteraciones es muy bajo, asi que de pronto un mejor caso sea que el
valor buscado sea el que este en el medio cuanto realiza por primera vez la pregunta.
Algoritmo 3

PROCEDURE Algoritmo3 (m,n: CARDINAL):CARDINAL;


VAR temp: CARDINAL;
BEGIN
WHILE m>0 DO
temp:=m;
m:=n MOD m;
n:=temp
END;
RETURN n
END Algoritmo3;

Respuesta:

a) Analizando este algoritmo y haciendo la respectiva prueba de escritorio, sirve para


dar el m.c.d de dos numeros dados.
b) La complejidad de este algortimo es:

PROCEDURE Algoritmo3 (m,n: CARDINAL):CARDINAL;


VAR temp: CARDINAL; O(1)
BEGIN
WHILE m>0 DO O(log(n))
temp:=m; O(1)
m:=n MOD m; O(1) O(log(n)) O(log(n))
n:=temp O(1)
END;
RETURN n
END Algoritmo3;

Peor caso O(log(n)): el peor caso seria que los numeros dados sean muy grandes y que sean
uno par y el otro impar.
Mejor caso Ω(log(n)): que el m.c.d sea muy pequeño.

ALGORITMO 4

PROCEDURE Algoritmo4(n: CARDINAL);


VAR i,j,k,s:INTEGER;
BEGIN
s:=0;
FOR i:=1 TO n-1 DO
FOR j:=i+1 TO n DO
FOR k:=1 TO j DO
s:=s+2
END
END
END
END Algoritmo4;
Respuesta:

a) Analizando este algoritmo y haciendo la respectiva prueba de escritorio, sirve para


dar una numero resultado de una suma.
b) La complejidad de este algortimo es:

PROCEDURE Algoritmo4(n: CARDINAL);


VAR i,j,k,s:INTEGER; O(1)
BEGIN
s:=0; O(1)
FOR i:=1 TO n-1 DO O(n)
FOR j:=i+1 TO n DO O(n)
FOR k:=1 TO j DO O(n) O(n2) O(n3) O(n3)
s:=s+2 O(1) O(n)
END
END
END
END Algoritmo4;

Peor caso O(n3): que el numero dado sea muy grande.


Mejor caso Ω(n3): que el numero dado sea 1.

Vous aimerez peut-être aussi