You are on page 1of 10

Cristo Jesus Alanis Barrera AL12508835 Evidencia de Aprendizaje. Presentaci n de !esultados Co"putaci n # Lic.

en $ate"%ticas

#nstrucciones& Resuelve los siguientes ejercicios que se presentan a continuacin a. Calcula los tiempos de ejecucin en el "ejor, peor, y caso pro"edio 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 !=n to i"1 #$ -1 do If a[!-1]&a[!] t'en tem)=a[!-1] a[!-1]=a[!] a[!]=tem) END -. END .0R END .0R END Algoritmo13

( ( ( ( ( ( (

1 ( * + , / 2

) ( % ) ) ) ) ) ( 1 )

Como primer paso estableceremos el nmero de operaciones elementales (OP !" que se ejecutan en el algoritmo: #nstruccin For i=1 to n-1 do For !=n to i"1 #$ -1 do If a[!-1]&a[!] t'en tem)=a[!-1] a[!-1]=a[!] a[!]=tem) END -. END .0R END .0R $ % % & % % OP !

!a cantidad de operaciones por cada iteracin interior, en caso de que a'j(1) * a'j) est' dada por: ((n" ) $ * % * % * & * % ) &+ Para el caso de que no se cumpla la condicin a'j(1) * a'j)

((n" ) $ * % ) , Cabe -acer mencin que en todos los casos las veces que se ejecutan ambas iteraciones es igual, lo nico que di.iere es la cantidad que se ejecutan las asignaciones dentro del bucle i., lo que -ace que se ejecuten n/& veces el ciclo interior, y n/& veces el ciclo interior, o un total de n0/%n*& veces ambos ciclos. n cuanto al tiempo de ejecucin se tiene que se ejecutan dos OP ! en el ciclo e1terior, lo que -ace para el mejor de los casos ((n" ) % (n/&" 2 , (n/&" ) &+n0/%+n*&+ 3 para el peor de los casos en que se ejecutar4an los ciclos i+ para todos los casos: ((n" ) % (n/&" 2 &+ (n/&" ) %+n0/5+n*%+ l cual toma el doble de tiempo que del mejor de los casos, lo cual podemos deducir que para el caso promedio tendr4amos ((n" ) &,n0/&,n*&, 6ependiendo de la cantidad de elementos del arreglo (n"

b. #nvestiga acerca del algoritmo de ,rdena"iento por #nserci n (Insertion Sort". i. scribe el procedimiento para que ordene de .orma creciente. ii. Construye su representacin en pseudocdigo iii. Construye su representacin en diagrama de .lujo iv. Programa el cdigo en lenguaje C o Java, y reporta los resultados ste m7todo de ordenacin itera un elemento por cada repeticin movi7ndolo a una posicin ordenada en una lista creciente. Por cada iteracin, el algoritmo remueve un elemento de los datos de entrada, encuentra la localidad que le pertenece dentro de una lista ordenada de elementos previamente iterados y lo inserta a-4. 8e repite -asta que no e1istan elementos de entrada. Cabe -acer mencin que es comn que la ordenacin se reali9a en el mismo arreglo de entrada, esto para evitar uso adicional de memoria: la ordenacin se reali9a iterando el arreglo de entrada, -aciendo que la lista ordenada cre9ca al inicio de el. n cada posicin del arreglo, se veri.ica el valor de esa posicin contra el valor m's alto de la lista ya ordenada. 8i es mayor, deja el elemento en lugar y se mueve al siguiente. 8i es menor, encuentra la posicin correcta dentro de la lista ordenada, y mueve todos los valores m's grandes para -acer espacio para insertar el valor en la posicin correcta. Para el pseudocdigo, por simplicidad se omite la llamada desde una rutina "ain, llenado del arreglo, y mostrar el arreglo ordenado.
1. -nicio de rutina de ordenaci4n ()ar5metros: varia#le arreglo con valores a ordenar )asado )or re6erencia) %. 7eclara varia#les 8ndice indice, indice_previo, cantidad_elementos $ valor_actual cantidad_elementos 9- cantidad de elementos en arreglo indice 9- 1 6or indice 9 cantidad_elementos - 1 valor_actual = arreglo[indice] indice_previo <- indice 1 :'ile indice_previo &= ; and arreglo[indice_previo] > valor_actual arreglo[indice] <- arreglo[indice_previo] indice_previo <- indice_previo 1 end-:'ile arreglo[indice] <- valor end-6or (. retorna a 6unci4n )rinci)al *. .in

Pseudocdigo de algoritmo de ordenamiento por insercin

Diagrama de flujo de algoritmo de ordenamiento por insercin

Implementacin en C de algoritmo de ordenamiento por insercin ;l compilar el programa y ejecutarlo nos muestra el arreglo ordenado ascendentemente:

Ejecucin de programa compilado de algoritmo de ordenamiento por insercin

c. Reescribe el procedimiento de ,rdena"iento por #nserci n del ejercicio anterior para que lo ordene de .orma decreciente. i. Construye las nuevas representaciones (pseudocdigo y diagrama de .lujo". ii. Programa el cdigo para que acepte un valor de seleccin que determine la entrega del resultado (orden creciente o decreciente seleccionable en pantalla". Para el pseudocdigo, por simplicidad se omite la llamada desde una rutina "ain, llenado del arreglo, y mostrar el arreglo ordenado, a di.erencia del paso anterior se -ace que los elementos se corran si son mayores y no menores (se subraya la di.erencia del programa previo".
+. -nicio de rutina de ordenaci4n ()ar5metros: varia#le arreglo con valores a ordenar )asado )or re6erencia) ,. 7eclara varia#les 8ndice indice, indice_previo, cantidad_elementos $ valor_actual cantidad_elementos 9- cantidad de elementos en arreglo indice 9- 1 6or indice 9 cantidad_elementos - 1 valor_actual = arreglo[indice] indice_previo <- indice 1 :'ile indice_previo &= ; and arreglo[indice_previo] > valor_actual arreglo[indice] <- arreglo[indice_previo] indice_previo <- indice_previo 1 end-:'ile arreglo[indice] <- valor end-6or /. retorna a 6unci4n )rinci)al 1. .in

Pseudocdigo de algoritmo de ordenamiento por insercin en orden descendente

Diagrama de flujo de algoritmo de ordenamiento por insercin en orden descendente

Implementacin en C de algoritmo de ordenamiento por insercin ascendente o descendente ;l compilar el programa y ejecutarlo nos pregunta el orden y d' el arreglo ordenado apropiadamente:

Ejecucin de programa compilado de algoritmo de ordenamiento por insercin ascendente o descendente

Referencia: http://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3n

You might also like