You are on page 1of 3

Anlisis y diseo de algoritmos

Relacin de ejercicios del tema 1 (Complejidad) 1. Calcular la complejidad de los siguientes bloques de instrucciones a) x=x+1 for(i=1; i<n i++)! x=x+1 " if (n#$ =%)! for(i=1; i&n i++)! x=x+1 " " i=1 '(ile (i&n)! x = x+1; i = i+$; " i=$ '(ile (i&n)! x = x+1; i = i)$; " for(i=1; i&n i++)! for(j=1; j&i j++)! x=x+1 " " for(i=1; i&n*1 i++)! for(j=n; j&i+1 j**)! x=x+1 " "

b)

b)

c)

d)

e)

f)

$. Calcular para el siguiente algoritmo que corresponde al algoritmo de ordenaci+n por selecci+n el tiempo de ejecuci+n , determinar la complejidad en los casos mejor , peor static -oid intercambia (int./ a int i int j) ! int temp; temp = a.i/; a.i/ =a .j/; a.j/ = temp; " static int pos0inimo (int./ a int prim int ult) ! int 1; int pmin = prim; for ( 1 = prim+1; 1 <= ult; 1++ ) if ( a.1/ < a.pmin/ ) pmin = 1; return pmin; " public static -oid seleccion (int./ a int prim int ult) ! int i; for ( i = prim; i < ult; i++ ) ! intercambia (a i pos0inimo (a i ult)); " " 2. Calcular el tiempo de ejecuci+n , determinar la complejidad de los casos mejor , peor del siguiente algoritmo para determinar si una matri3 cuadrada es sim4trica. public static boolean simetrica (int ./ ./ matri3 int n)!
int i j; boolean b;

b = true; i =%; '(ile(i<n 55 b)! j= i +1; '(ile(j<n 55 b)! b = (matri3 .i/.j/ = = matri3.j/.i/); j ++; "; i ++; "; return b; "
$

6. Calcular el tiempo de ejecuci+n , determinar la complejidad de los casos mejor , peor del siguiente algoritmo.

public static -oid algoritmo (int n) ! int x = 1; int i j 1; for ( i = 1; i <= n; i++ ) for ( j = i+1; j <= n; j++ ) for ( 1 = i + j * 1; 1 <= n; 1++ ) x = x+ $; "

7. Calcular mediante expansi+n de recurrencias el tiempo de ejecuci+n , determinar la complejidad en los casos mejor , peor del siguiente algoritmo public static int recursi-a (int n) ! if ( n <= 1 ) return 1; else return ( recursi-a (n*1) + recursi-a (n*1)); "