Está en la página 1de 3

Clase Práctica #2: Análisis de la complejidad temporal de algoritmos utilizando notación

O-grande.

INTRODUCCIÓN
Estudiar:
- Complejidad de algoritmos: temporal.
- Notación O-grande, definición.
- Propiedades de la notación O-grande.
- Reglas para la determinación de la complejidad de un algoritmo.

Orientación para los Ejercicios


Los ejercicios que siguen deben ser realizados por los estudiantes como preparación para la
clase del miércoles 17 de mayo de 2016. En esta clase se chequeará la solución dada por
cada estudiante a estos ejercicios.
Los ejercicios marcados en amarillo ya fueron realizados como parte de la clase del día 15
de mayo de 2016.

1- Dados los siguientes algoritmos determine en notación asintótica su complejidad


temporal (utilice la notación O), en los siguientes casos:

a) public static int may(int a,int b,int c)


{
int m = a;
if (m < b)
m = b;
if (m<c)
m = c;
return m;
}

b) public static int serie1(int n)


{
int j=n;
int s=0;
while (j>=1){
s=s+j;
j=j-1;
}
return s;
}

c) public static int suma1(int n)


{
int a=0;
int b=5;
for ( int i = 0; i < n; i ++ )
a += b;
return a;
}

d) public static int suma2()


{
int a=0;
int b=5;
for ( int i = 1; i < 10; i ++ )
a += b;
return a;
}

e) public static int suma3(int n) {


int a=0;
int b=5;
for ( int i = 0; i < n; i ++ )
for ( int j= 0; j < n; j ++ )
a += b;
return a;
}

f) public static int serie2(int n) {


int a=0;
int b=5;
for ( int i = 0; i < n; i ++ )
for ( int j= 0; j <= i; j ++ )
a += b;
return a;

g) public static int suma4(int n) {


int a;
int b=5;
int c= 1;
while (c < n){
a += b;
c = 2*c;
}
return a;
}

2- Escriba algoritmos para resolver los problemas siguientes:


a) determinar si un número entero N conocido es primo o no.
b) determinar el menor elemento de una secuencia de valores enteros almacenados en
un arreglo.
c) determinar la cantidad de vocales que hay en un arreglo de caracteres.
d) contar la cantidad de elementos pares que hay en un arreglo de enteros.
e) calcular el factorial de cada uno de los elementos enteros contenidos en un arreglo
y obtener la suma total de los valores del factorial calculados.
Analice la complejidad temporal (O grande) de cada uno de los algoritmos
desarrollados por Usted. Si es posible escriba los algoritmos anteriores en el lenguaje
de programación Java.

3- Dado el siguiente algoritmo determine en notación asintótica su complejidad temporal


(utilice la notación O), en los siguientes casos:
a) Peor de los casos
b) Mejor de los casos

Seudocódigo del algoritmo que determina si una cadena de caracteres es un palíndrome


Entrada: una cadena de caracteres a en un arreglo
Salida: respuesta: true o false en dependencia si es o no un palíndrome
Algoritmo
public static boolean palindrome(char[] a) {
boolean respuesta = true;
int n = a.length;
int mitad = n/2;
int i=0;
while (respuesta && i <= mitad)
if (a[i] != a[n-1-i])
respuesta = false;
else
i++;
return respuesta;
}

4- Analice la complejidad temporal del siguiente algoritmo:


public static int suma (int n) {
int a=0;
int b=5;
int c= n;
while ( c > 1 ){
a += b;
c = c/2;
}
return a;
}

También podría gustarte