Escolar Documentos
Profissional Documentos
Cultura Documentos
Ingeniera en Software
Anlisis de Algoritmos
Establecimiento Pblico de
Educacin Superior, adscrito al
Departamento de Antioquia
Indicador de logro
Calcula el orden de magnitud o tiempo de ejecucin en el peor de los casos,
como medida de la complejidad de un algoritmo, basado en el contador de
frecuencias.
Ejercicios propuestos
A. Determinar el contador de frecuencias y el orden de magnitud de los
siguientes algoritmos, teniendo en cuenta las restricciones de cada punto.
1.
1.1.
1.3
int funcion3 ( ){
int n, cont, prod;
Consola.imprimir(Ingrese un nmero entero: )
n = Consola.leerEntero( );
cont = 0;
prod = 3;
while (prod <= n){
cont = cont + 1;
prod = prod * prod;
}
return cont;
}
Nodo
- info: int
- liga: Nodo
+ Nodo( )
+ setInfo(int)
+ getInfo( ): int
+ setLiga(Nodo)
+ getLiga( ): Nodo
ListaLigada
- cab: Nodo
+ ListaLigada( )
+ // mtodos convencionales
+ invertirLista1( )
+ invertirLista2( )
+ eliminar(int)
Consola
<<abstract>>
2.1.
public void invertirLista1( ){
int temp;
Nodo p, q, r;
q = cab;
while (q.getLiga() != null)
q = q.getLiga( );
for(p = cab; p != q && q.getLiga( ) != p; p = p.getLiga( )){
temp = p.getInfo( );
p.setInfo(q.getInfo( ));
q.setInfo(temp);
for(r = p; r.getLiga( )!= q; r = r.getLiga( ));
q = r;
}
}
2.2.
public void invertirLista2( ){
Nodo p = cab, q;
cab = null;
while (p != null){
q = p.getLiga( );
p.setLiga(cab);
cab = p;
p = q;
}
}
2.3.
public void eliminar(int dato){ //1
boolean sw = false;
Nodo p, ant = null, n = null;
p = cab;
while (p!= null && !sw){ //2
if (p.getInfo( ) == dato)
sw = true;
else { //3
ant = p;
p = p.getLiga( );
} //3
} //2
if (sw){ //4
if (p == cab){ //5
cab = p.getLiga( );
p.setLiga(null);
p = null;
} //5
else{ //6
n = p.getLiga( );
ant.setLiga(n);
p.setLiga(null);
p = null;
} //6
Consola.imprimir(dato + " eliminado");
} //4
else
Consola.imprimir(dato + " no existe");
} //1
3.1.
void proceso1 (int num){
int i, k;
i = 1;
while (i <= num){
k = i;
while (k <= num)
k++;
k = 1;
while (k <= i)
k++;
i++;
}
}
3.2.
void proceso2 (int num){
int i, k, t;
i = 1;
while (i <= num - 1){
k = i + 1;
while (k <= num){
t = 1;
while (t <= k)
t++;
k++;
}
i++;
}
}
3.3.
void proceso3 (int num){
int i = 1, k;
while (i <= num){
k = num - i;
while (k >= 1)
k = k / 5;
i++;
}
}
6.
7.
8.
tamao.
16. Crear una pila y una cola con los elementos de un vector. Mostrar la pila y
retornar la cola.
17. Crear una pila y una cola con los elementos de una lista ligada simple.