Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.
Indice
1.
Indice
2.
Introduccin
3.
Objetivos
4.
Analisis
4.1.1 Burbuja
16
Error! Marcador no definido.
18
2.
Introduccin
Cuando a uno tiene que ordenar datos, ya sean registros de ventas de clientes o resultados de notas asociadas
rescpectivamente a cada alumno, etc. Siempre se choca con la gran dificultad de ir ubicando uno por uno el
posicion que le corresponde a cada elemento, si la cantidad de datos a ordenar no es mucha, uno podria
ordenar asta 50 datos manualmente con la minima probabilidad de equivocarse; sin embargo si cantidad de
datos la supera como 100 o 1000 datos, una persona promedio no podria ordenarlos de manera eficaz, cabria el
riesgo de que se equivoque en la posicion de alguno de los elementos y de que se tomo demasiado tiempo en
realizar dicha actividad, por eso desde la aparcion de los computadores el hombre fue desarrollando algoritmos
que faciliten esta tarea demasiada complicada en cuanto a cantidad se trata. Poco a poco los algoritmos de
ordenamiento fueron evolucionando para convertirse en lo que son ahora, si bien en este trabajo mostraremos
algunas de las clasicas formas de ordenamiento interno y externo, veremos que algunos son mas eficaces y
eficientes que otros dependiendo del factor cantidad de datos, o ambiente en el que se opera.
Dia a dia estos algoritmos son estudiados cada vez ms y ms; para la mejor operacin de las grandes
multinacionales en el mundo, para gestionar espacio y tiempo, factores que son esenciales en este mundo
globalizado, y como estudiantes de Ingenieria de Software no somos la excepcin, nosotros tambien somos
desarroladores de software y como desarrolladores en su debido momento tambien aportaremos a la
investigacion de este historico y beneficioso tema .
3.
Objetivos
Tratar de marcar las diferencias de tiempos al momento de realizar los metodos de ordenamiento.
Iterar con 5,10,100 mil o mas datos, definir que metodos son mas eficases y eficientes con respecto a la
cantidad de datos que se trabajan.
Ampliar la gama de conocimentos con respecto a los diferentes algoritmos de ordenamiento internos y
externos.
4. Analisis
4.1. Ordenamiento Interno
4.1.1 Mtodo Burbuja
4.1.1.1. Burbuja Menor
Se tienen los siguientes elementos : 14 58 7 19 47 30 11 41
Primera Iteracion:
A[6] > A[7] (11 > 41)
no hay cambio
si hay cambio
si hay cambio
si hay cambio
no hay cambio
si hay cambio
si hay cambio
14
58
11
19
47
30
41
Podemos apreciar que el valor mas pequeo del arreglo, el numero 7, se desplaza al extremo de la
izquierda.
Segunda Iteracion:
A[6] > A[7] (30 > 41)
no hay cambio
si hay cambio
no hay cambio
no hay cambio
si hay cambio
si hay cambio
11
14
58
19
30
47
41
Ahora el segundo elemento de menor valor, el numero 12, es situado en la posicion que le corresponde
11
14
19
58
30
41
47
4ta pasada:
11
14
19
30
58
41
47
5ta pasada:
11
14
19
30
41
58
47
6ta pasada:
11
14
19
30
41
47
58
7ma pasada:
11
14
19
30
41
47
58
41
58
Primera Iteracion:
A[0] > A[1] (14 > 58)
no hay cambio
si hay cambio
si hay cambio
si hay cambio
si hay cambio
si hay cambio
si hay cambio
19
47
30
11
Podemos apreciar que el valor mas grande del arreglo, el numero 58, se desplaza al extremo de la
derecho.
Segunda Iteracion:
A[0] > A[1] (14 > 7)
si hay cambio
no hay cambio
no hay cambio
si hay cambio
si hay cambio
si hay cambio
14
19
30
11
41
47
58
Ahora el segundo elemento de mayor valor, el numero 12, es situado en la posicion que le corresponde
Aqu mostramos el resultado despues de todas las iteraciones a realizar
3era pasada:
14
19
11
30
41
47
58
4ta pasada:
14
11
19
30
41
47
58
5ta pasada:
11
14
19
30
41
47
58
6ta pasada:
11
14
19
30
41
47
58
7ma pasada:
11
14
19
30
41
47
58
2 n
2
= 0
= 0.75 (2 2)
= 1.5 (2 2)
Ahora bien, el tiempo necesario para ejecutar el algoritmo de la burbuja es proporcional a n2,O(n2),
donde n es el numero de elementos de arreglo.
Primera Iteracion:
PRIMERA ETAPA (de derecha a izquierda)
A[6] > A[7] (11 > 41)
no hay cambio
si hay cambio
si hay cambio
si hay cambio
no hay cambio
si hay cambio
si hay cambio
14
58
11
19
47
30
41
no hay cambio
si hay cambio
si hay cambio
si hay cambio
si hay cambio
si hay cambio
14
11
19
47
30
41
58
Podemos apreciar que el mayor y el menor elemento ya estan posicionados donde les corresponde, luego
procedemos con los siguientes elementos de la misma forma
Segunda Iteracion:
PRIMERA ETAPA (de derecha a izquierda)
A[5] > A[6] (30 > 41)
no hay cambio
si hay cambio
no hay cambio
no hay cambio
si hay cambio
11
14
19
30
47
41
58
no hay cambio
no hay cambio
no hay cambio
si hay cambio
11
14
19
30
41
47
58
Podemos apreciar que al realizar la primera etapa de la tercera pasada se observa que no se realizan cambios; por
lo tanto, la ejecucion del algoritni se termina.
Primera Iteracion:
A[1] < A[0] (58 < 14)
no hay cambio
14
19
58
47
30
11
41
30
11
41
30
11
41
Segunda Iteracion:
A[2] < A[1] (7 < 58)
si hay cambio
si hay cambio
19
14
58
47
Tercera Iteracion:
A[3] < A[2] (19 < 58)
si hay cambio
no hay cambio
58
14
19
47
Podemos apreciar que una vez que se determina la posicin correcta del elemento se interrumpen las
comparaciones. Por ejemplo, para el caso de anterior no se realiz la comparacin A[1] < A[0].
Y este seria el resultado de las siguientes iteraciones:
4ta pasada:
14
19
47
58
30
11
41
5ta pasada:
14
19
30
47
58
11
41
6ta pasada:
11
14
19
30
47
58
41
7ma pasada:
11
14
19
30
41
47
58
= 1
El nmero maximo de comparaciones y movimientos entre los elementos se produce cuando el arreglo estan en
orden inverso
= 2
Si bien, el nmero de comparaciones promedio, que es cuando los elementos aparecen en el arreglo en forma
aleatoria, se puede calcular mediante la suma de las comparcaiones minimas y maximas dividida entre 2.
2 +2
4
= 0
El numero maximo de movimientos se presenta cuando el arreglo esta en orden inverso. En la primera iteracion se
realiza un movimieto en la segunda dos y asi sucesivamente n-1 movimientos entra los elementos en la ultima
pasada.por lo tanto:
2
2
El numero de movientos promnedio, que se da cuando los elementos se encuentra en el arreglo en forma
aleatoria, se calcula como la suma de los movientos minimos y maximos divididos entre 2. Por lo tanto:
2
4
Primera Iteracion:
A[1] < A[0] (58 < 14)
no hay cambio
14
19
58
47
30
11
41
30
11
41
30
11
41
Segunda Iteracion:
A[2] < A[0] (7 < 14)
si hay cambio
19
14
58
47
Tercera Iteracion:
A[3] < A[1] (19 < 14)
no hay cambio
si hay cambio
58
14
19
47
Cuarta Iteracion:
A[4] < A[1] (47 < 14)
no hay cambio
no hay cambio
si hay cambio
47
14
19
58
30
11
41
58
11
41
47
58
41
41
47
58
Quinta Iteracion:
A[5] < A[2] (47 < 19)
no hay cambio
si hay cambio
30
14
19
47
Sexta Iteracin:
A[6] < A[2] (11 < 19)
si hay cambio
no hay cambio
si hay cambio
19
11
14
30
Sptima Iteracin:
A[7] < A[3] (41 < 19)
no hay cambio
si hay cambio
no hay cambio
19
11
14
30
2
4
Este es un algoritmo de comportamiento antinatural y, por lo tanto, es necesario ser muy cuidadoso cuando se
hace un anlisis de l. Las hbiles mejoras introducidas producen un efecto negativo cuando el arreglo esta
ordenado y resultados apenas satisfactorios cuando las claves estn desordenadas. De todas maneras. Se debe
recordar que no se reduce el nmero de movimientos que es una operacin ms complicada y costosa que la
operacin de comparacin. Por lo tanto, el tiempo de ejecucin del algoritmo sigue siendo proporcional a n2,
O(n2).
Primera Iteracin:
Se realiza la asignacin: MENOR A[0]
(14)
(14<58)
S se cumple la condicin
(14<7)
No se cumple la condicin
(7<19)
S se cumple la condicin
(7<47)
S se cumple la condicin
(7<30)
S se cumple la condicin
(7<11)
S se cumple la condicin
(7<41)
S se cumple la condicin
58
14
19
47
30
11
41
Podemos observar que el menor elemento del arreglo A[2] (7) se intercambio con el primer elemento A[0] (14),
realizando solamente un movimiento.
Segunda Iteracin:
Se realiza la asignacin: MENOR A[1]
(58)
(58<14)
No se cumple la condicin
(14<19)
Si se cumple la condicin
(14<47)
Si se cumple la condicin
(14<30)
Si se cumple la condicin
(14<11)
No se cumple la condicin
(11<41)
Si se cumple la condicin
11
14
19
47
30
58
41
Podemos observar que el segundo menor elemento del arreglo A[6] (11) se intercambio con el segundo elemento
A[1] (58).
Y este seria el resultado de las siguientes iteraciones:
3era pasada:
11
14
19
47
30
58
41
4ta pasada:
11
14
19
47
30
58
41
5ta pasada:
11
14
19
30
47
58
41
6ta pasada:
11
14
19
30
41
58
47
7ma pasada:
11
14
19
30
41
47
58
2
2
Respecto del nmero de intercambios, siempre ser n-1, a excepcin de que se tenga incorporada en el algoritmo
alguna tcnica para prevenir el intercambio de un elemento consigo mismo. Por lo tanto:
=1
El tiempo de ejecucin del algoritmo es proporcional al n2, O(n2), aun cuando es ms rpido que los mtodos
presentados con anterioridad.
Se debe producir, entonces, un archivo F3 ordenado, como resultado de la mezclas de F1 y F2. Solo se puede
acceder en forma directa dos claves, primera del archivo F1 y la segunda del archivo F2. La comparacin que se
realizan para producir el archivo F3 son:
(06 < 10) Si se cumple la condicin
Se escribe 06 en el archivo de salida F3 y se vuelve a leer la otra clave de F1 (18)
(09 < 10)S cumple la condicin
Se escribe 09 en el archivo de salida F3 y se vuelve a leer otra clave de F1 (18)
(18 < 10) No se cumple la condicin
Se escribe 10 en el archivo de salida F3 se vuelve a leer otra clave de F2 (16)
El estado de los archivos F1, F2 y F3, hasta el momento, es como se muestra ms abajo. La flecha de la seal el
ltimo elemento ledo de los archivos que se estn intercalando.
F1: 06 09 18 20 35
F2: 10 16 25 28 66 82 87
F3: 06 09 10
El proceso contina hasta que en uno u otro archivo se detecte su final; en tal caso slo se tendr que copiar la
informacin del archivo no vaco al archivo de salida F3. El resultado final de la informacin entre los archivos F1 y
F2 es:
F3: 06 09 10 16 18 20 25 28 35 66 82 87
75
14
68 29
17
31
25
04
05
13
18
72
46
61
25
04
05
13
18
72
46
61
Primera pasada:
Particin en secuencia de longitud 1.
F: 09
75
14
68 29
17
31
F1: 09 14 29 31 04 13 72 61
F2: 75 68
17 25 05 18 46
04 05 13 18 46 72 61
17 29 04 05
F2: 14 68 25 31 13
46 72
18 61
72
Tercera pasada:
Particin en secuencia de longitud 4
F1: 09
14
68
75
04
05
13
F2: 17
25
29
31
46
61
72
18
75
04 05
13
18 46 61 72
Cuarta pasada:
Particin en secuencia de longitud 8
F1: 09
14
17
25
29
31
68
F2: 04
05
13
18
46
61 72
75
05 09 13 14
17
18 25
29
31
46
61 68 72 75
75
14
68
29
17
31
25
04
05
13
18
72
46
75
29
F3: 14 68 17
25
46
61
31 04 05 13 18 72
Primera fusin-particin
F: 09 14 68 75 04 05 13 18 25 46 61 72
F1: 17 29 31
Segunda fusin de particin:
61
F2: 09 14 17 29 31 68 75
F3: 04 05 13 18 25 46 61 72
Tercera fusin de particin:
F: 04 05 09 13
14 17 18 25 29 31
46
61 68 72 75
F1:
Se observa que al realizar la tercera fusin- particin el segundo archivo queda vaco: por lo tanto, se puede
afirmar que el archivo ya se encuentra ordenado.
Manual de usuario
Introduccin
Es una aplicacin desarrollado en lenguaje C, tiene como principal funcionalidad mostrar al usuario mediante una
lista detallada, el tiempo de ejecucin de los diferentes tipos de algoritmos de ordenamiento tanto internos como
externos.
De esa manera mostrarle al usuario el comportamiento de los algoritmos de ordenamiento, en funcin a los datos
que procesa.
Conclusiones
1. La aplicacin es muy sencilla de usarlo no requiere un usuario especializado.
2. Es una herramienta adecuada para el buen uso de los algoritmos, al momento de desarrollar aplicaciones
donde estas manejen gran o mediana cantidad de datos.
Conclusiones
al marcar los tiempos de procesamiento de cada algoritmo, se vuelve a reafirmar que el algoritmo menos
eficiente es el algoritmo de la burbuja, Y el ms eficiente es el QuickSort con un tiempo muy pequeo comparado
con los otros algoritmos.
Los algoritmos internos son ms rpidos en procesar, los datos, sin embargo los algoritmos externos requieren
ms tiempo para procesar los datos del mismo tamao, esto es debido a que la memoria principal es ms rpida
que los dispositivos de almacenamiento secundario como los discos duros, y esto hace que el ordenamiento en
archivos se ha mas lento.
Podemos concluir adems que a pesar de estar ordenados los archivos, el tiempo del proceso sigue estando en el
mismo rango, esto es debido a que el algoritmo tiene que acceder al dispositivo de almacenamiento para procesar
los datos.
Resultado estadstico es:
5000
40000
75000
50000
40000
30000
20000
10000
0
75000
5000
Bibliografia
CAIR, Osvaldo y GUARDATI, Silvia, tercera edicin, ESTRUCTURA DE DATOS, Mc-Graw Hill, Mxico.
CHERRE, Rafael, 2001, primera edicin, LENGUAJE DE PROGRAMACION C/C++ Y C.net, editorial macro,
Lima-Peru.
LIZAMA, Edgar, 2009, primera edicin, PROGRAMACION CON C++, fondo editorial UNMSM, Lima-Per.
JOYANES AGUILAR, Luis, 2008, cuarta edicin, FUNDAMENTOS DE PROGRAMACION, ALGORITMOS,
ESTRUCTURA DE DATOS Y OBJETOS, Mc-Graw Hill, Madrid.
JOYANES AGUILAR, Luis, LUCAS SANCHEZ, Garca, IGNACIO ZAHONERO, Martnez, 2007, primera
edicin, ESTRUCTURA DE DATOS EN C++, Mc-Graw Hill, Madrid.