Sei sulla pagina 1di 7

Evidencia de Aprendizaje Unidad 2

Computacin 1
Programacin de Algoritmos Tpicos en Java
a. Calcula los tiempos de ejecucin en el mejor, peor, y caso promedio del
programa siguiente:
Constante n = un nmero entero (int)
Type vector = Array [1..n] de int
Programa Algoritmo1(VAR a:vector)
int i,j
int temp
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 IF
END FOR
END FOR
END Algoritmo1;

(*
(*
(*
(*
(*
(*
(*
(*
(*

1
2
3
4
5
6
7
8
9

*)
*)
*)
*)
*)
*)
*)
*)
*)

Observamos que la lnea 1, contiene 2 OPEL; la lnea 2, 3 OPEL; la lnea 3, 2


OPEL; la lnea 4, 2 OPEL; la lnea 5, 2 OPEL; la lnea 6, 2 OPEL; la lnea 7, 1 OPEL; la
lnea 8, 1 OPEL y finalmente la lnea 9, 1 OPEL

Ahora podemos analizar los casos posibles :

i.

Mejor caso, Esto pasa si el programa termina lo ms pronto posible, el


programa podra terminar en la lnea dos, dado que existe una igualdad
entre la constante y la variable y despus de la lnea dos se ir a la lnea
ocho y nueve as quedando entonces : T(n)= 2+3+1+1=7.

ii.

Caso medio , Ocurre si el programa ejecuta el tiempo promedio di el major


ni el peor, as: T(n)=2+3+2+2+2+2+1=14
El peor caso, Ocurrir si el programa tiene que ejecutar todas las
instrucciones, hasta encontrar la respuesta final quedando :
T(n)=2+3+2+2+2+2+1+1+1=16

iii.

b. Investiga acerca del algoritmo de Ordenamiento por Insercin (Insertion Sort).


Suponiendo que tuviramos una serie de datos a ordenar, el algoritmo comparar el primer
trmino con el segundo y por lo tanto decidir si es mayor o menor que el segundo, lo coloca a la
izquierda independientemente del tipo de ordenamiento que estemos realizando.
Al comparar el segundo termino con el tercero de la lista de datos, es cuando,
dependiendo del tipo de ordenamiento que estemos realizando, de mayor a menor, o
de menor a mayor, ser donde el segundo y tercer elemento se ubiquen.
El algoritmo comparar si el tercer elemento es mayor o menor que el segundo
elemento y dependiendo del tipo de ordenamiento del algoritmo, el tercer numero se
mover junto al primer elemento o permanecer en su lugar.
Entonces el proceso continuar, hasta que el algoritmo haya comparado todos los
datos y ordenado los mismos, de mayor a menor o de menor a mayor.

i. Escribe el procedimiento para que ordene de forma creciente


A. Si solo se inserta un dato, el algoritmo termina.
B. Cuando el segundo dato se inserta, el primer dato es comparado
con el segundo dato, si el primer dato fuese menor que el
primero, el algoritmo termina, pero si el primer dato es mayor que
el segundo dato, el algoritmo reordena los datos y el segundo
trmino ocupa la primera posicin por lo que el primero pasara a
la segunda posicin.
C. Cuando el tercer dato se inserta, el algoritmo lo compara con el
segundo, si fuese el caso de que el tercer elemento fuera mayor
que el segundo, el programa termina, pero si el tercer elemento
fuera menor que el segundo elemento, entonces el algoritmo
reordena las posiciones y el tercer elemento ocupa la segunda
posicin y el segundo la tercera.
D. Posteriormente el algoritmo comparar el primer elemento, con
el nuevo segundo elemento, si ocurriera el caso donde el segundo
elemento fuera mayor que el primer elemento, el algoritmo

termina, pero si el segundo elemento es menor que el primer


elemento, el algoritmo reordena los datos y el primer dato toma
la segunda posicin y el segundo dato asume la primera.
E. Llegado a ste punto comparar, el nuevo segundo elemento con
el tercer elemento, si el nuevo segundo elemento es menor que el
tercero, el algoritmo termina, si el segundo nuevo elemento es
mayor que el tercero, el algoritmo, reorganiza los elementos,
colocando el segundo dato en la tercera posicin y el que estaba
en la tercera posicin pasar a la segunda posicin. Este
segmento de la rutina muy probablemente no ocurra, dado que si
el primer dato pasa a la segunda posicin y tiene que compararse
con el dato que se encuentra actualmente en la tercera posicin,
lgicamente sera el segundo dato que se insert, por lo que el
algoritmo, se detendr en este punto, por lo que aqui es dnde se
detiene el algoritmo. Este proceso contina, hasta que finalmente
todos los datos que se han ido insertando hayan sido analizados
por el procedimiento descrito.
ii. Construye su representacin en pseudocdigo
1. Algoritmo de ordenacin insercin ascendente
2. Entradas:var i, j, temp: longint;
Salidas: Variables ordenadas
3.Comienza el algoritmo.
4.j=i-1;
Temp=a(i); //El algoritmo prueba el primer dato y busca pasar a lo siguiente o
concluir

5.while(temp<a(j)) and (j)>=1) do


If a[j+1]=a(j);
Dec(j);
Inc(m);
End; // El algoritmo analiza cada entrada y ordena conforme al valor del dato.
If a[j+1]=temp;
End; //
iii. Construye su representacin en diagrama de flujo

Inicio

J=i+1
Temp=a[i];
N

temp<a[j] and
(j>=1)

Dec(j)
SI

Inc(m)

Fin

iv. Programa el cdigo en lenguaje C o Java, y reporta los resultados


i.
ii.
iii.
iv.
v.
vi.
vii.
viii.
ix.
x.
xi.
xii.

Programa de insercin () {
Int in, out;
For (out =1;out<nElems;out++) {
Long temp= a[out];
In=out
While (in>0 && a[in-1] >=temp) {
a[in] = a[in-1];
--in;
}
a[in] =temp;
}
}

c. Reescribe el procedimiento de Ordenamiento por Insercin del ejercicio anterior


para que lo ordene de forma decreciente.

1. Si solo se inserta un dato, el algoritmo termina.


2. Cuando el segundo dato se inserta, el primer dato es comparado con el
segundo dato, si el primer dato es mayor que el primero, el algoritmo termina,
si el primer dato es menor que el segundo dato, el algoritmo reordena los
datos y el segundo termino ocupa la primera posicin y el primero pasa a la
segunda posicin.

3. Cuando un tercer dato se agrega, el algoritmo compara este con el segundo, si


el tercer elemento es menor que el segundo, el programa termina, si el tercer
elemento es mayor que el segundo elemento, el algoritmo reordena las
posiciones y el tercer elemento ocupa la segunda posicin y el segundo la
tercera posicin.
4. Despus de esto, el algoritmo comparara el primer elemento, con el nuevo
segundo elemento, si el segundo elemento, es menor que el primer elemento,
el algoritmo termina, si el segundo elemento es mayor que el primer
elemento, el algoritmo reordena a los datos y el primer dato toma la segunda
posicin y el segundo dato toma la primera posicin.
5. Aqu, el algoritmo, comparara, el nuevo segundo elemento con el tercer
elemento, si el nuevo segundo elemento es mayor que el tercero, el algoritmo
termina, si el segundo nuevo elemento es menor que el tercero, el algoritmo,
reorganiza los elementos, colocando el segundo dato en la tercera posicin y
el que estaba en la tercera posicin pasara a la segunda posicin (es
importante indicar que este paso muy probablemente no suceda, pues
debemos recordar que si el primer dato pasa a la segunda posicin y tiene que
compararse con el dato que est ahora en la tercera posicin, muy
probablemente ser el segundo dato que se insert, por lo que el algoritmo, se
detendr en este punto), donde el algoritmo parara aqu. Este proceso
descrito, continuara, hasta que todos los datos que se van insertando hayan
sido analizados por el procedimiento descrito.
i. Construye las nuevas representaciones (pseudocdigo y diagrama de
flujo).
1. Algoritmo de ordenacin por insercin decreciente
2. Entradas:var i, j, temp: longint;
Salidas: Variables ordenadas
3.Comienza el algoritmo.
4.j=i-1;
Temp=a(i); //El algoritmo toma el primer dato y busca
que concluya o pasar a la siguiente instruccion
5.while(temp<a(j)) and (j)>=1) do
If a[j-1]=a(j);
inc(j);
dec(m);
End; // El algoritmo analiza cada entrada y ordena
dependiendo el valor del dato.
If a[j-1]=temp;
End; // el programa termina.

Diagrama de flujo

Inicio

J=i+1
Temp=a[i];

N
o

Dec(j)
Inc(m)
temp<a[j] and
(j>=1)

Si

a[j+i]=a[j]
Fin

i.

Programa el cdigo para que acepte un valor de seleccin que


determine la entrega del resultado (orden creciente o decreciente
seleccionable en pantalla).
Programa de insercin () {
Int in, out;
For (out =1;out<nElems;out++)
For (out =1;out>nElems;out++) {
Long temp= a[out];
In=out
While (in>0 && a[in-1] >=temp) {
If
a[in] = a[in-1];
--in;
}
a[in] =temp;
if
a[in] = a[in+1];
--in;
}
a[in] =temp;
}}

Potrebbero piacerti anche