UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
1
METODOS DE ORDENAMIENTO
FACULTAD DE INGENIERIA DE
SISTEMAS E INFORMATICA
INTEGRANTES:
 William Inocencio Romero 14200091
 Diego Max López Torres 14200020
 Irma Ferrer Anaya 14200133
 Miguel De La Cruz Acuña 14200080
 Alexandra Jara Coavoy 14200168
 Oncoy Corsino Yunior Efrain 14200105
PROFESOR: Santiago Moquillaza Henríquez
CICLO: 2015-I
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
Decana de América, Fundada en 1551
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
2
INTRODUCCION
Los algoritmos de ordenamiento nos permiten, como su nombre lo dice,
ordenar. En este caso, nos servirán para ordenar vectores o matrices con
valores asignados aleatoriamente. Nos centraremos en los métodos más
conocidos, analizando la cantidad de comparaciones que suceden, el tiempo
que demora y revisando el código, escrito en Java, de cada algoritmo.
Este informe nos permitirá conocer más a fondo cada método distinto de
ordenamiento, desde uno simple hasta el más complejo. Se realizaran
comparaciones en tiempo de ejecución.
EL ALGORITMO
Explicación del algoritmo
El algoritmo
Complejidad del algoritmo
La complejidad
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
3
CONCLUSIONES
Método de ordenamiento por selección:
Su funcionamiento es el siguiente:
 Buscar el mínimo elemento de la lista
 Intercambiarlo con el primero
 Buscar el siguiente mínimo en el resto de la lista
 Intercambiarlo con el segundo
Y en general:
 Buscar el mínimo elemento entre una posición i y el final de la
lista
 Intercambiar el mínimo con el elemento de la posición i
Complejidad:
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el
caso de tener que ordenar un vector de enteros, esta mejora no es
muy sustancial, pero cuando hay que ordenar un vector de estructuras
más complejas, la operación intercambiar () sería más costosa en
este caso. Este algoritmo realiza muchas menos
operaciones intercambiar () que el de la burbuja, por lo que lo
mejora en algo. Si una de las líneas se sustituyera por intercambiar
(lista[i], lista[j]) tendríamos una versión del algoritmo de la
burbuja (naturalmente eliminando el orden intercambiar del final).
Conclusiones:
Respecto a otros como el de burbuja o de inserción directa es que no
mejora su rendimiento cuando los datos ya están ordenados o
parcialmente ordenados. Así como, por ejemplo, en el caso de la
ordenación de burbuja se requeriría una única pasada para detectar
que el vector ya está ordenado y finalizar, en la ordenación por
selección se realizarían el mismo número de pasadas
independientemente de si los datos están ordenados o no.
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
4
Método de ordenamiento por burbuja:
Funciona revisando cada elemento de la lista que va a ser ordenada
con el siguiente, intercambiándolos de posición si están en el orden
equivocado. Es necesario revisar varias veces toda la lista hasta
que no se necesiten más intercambios, lo cual significa que la lista
está ordenada.
Complejidad:
El ordenamiento de burbuja tiene una complejidad Ω(n²) igual que
ordenamiento por selección. Cuando una lista ya está ordenada, a
diferencia del ordenamiento por inserción que pasará por la lista
una vez y encontrará que no hay necesidad de intercambiar las
posiciones de los elementos, el método de ordenación por burbuja
está forzado a pasar por dichas comparaciones, lo que hace que su
complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga
como el algoritmo más ineficiente que existe, aunque para muchos
programadores sea el más sencillo de implementar.
Conclusiones:
Puede verse que el número de repeticiones solo depende de n (términos
del vector) y no del orden de los términos, esto es, si pasamos al
algoritmo una lista ya ordenada, realizará todas las comparaciones
exactamente igual que para una lista no ordenada. Esta es una
característica de este algoritmo.
Método de ordenamiento por Shell:
Complejidad:
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
5
El algoritmo de Shell modifica los saltos contiguos resultantes de
las comparaciones por saltos de mayor tamaño y con ello se consigue
que la ordenación sea más rápida. Generalmente se toma como salto
inicial n/2 (siendo n el número de elementos), luego se reduce el
salto a la mitad en cada repetición hasta que el salto es de tamaño
1.
Conclusiones:
El Shell sort es una generalización del ordenamiento por inserción,
teniendo en cuenta dos observaciones:
 El ordenamiento por inserción es eficiente si la entrada está
“casi ordenada”.
 El ordenamiento por inserción es ineficiente, en general,
porque mueve los valores solamente una posición cada vez.
El algoritmo Shell sort mejora el ordenamiento por inserción
comparando elementos separados por un espacio de varias posiciones.
Esto permite que un elemento haga “pasos más grandes” hacia su
posición esperada. Los pasos múltiples sobre los datos se hacen con
tamaños de espacio cada vez más pequeños. El último paso del Shell
sort es un simple ordenamiento por inserción, pero para entonces, ya
está garantizado que los datos del vector están casi ordenado.
Método de ordenamiento por inserción:
Complejidad:
Este algoritmo es estable en su ordenación interna. Tiene como
complejidad en el peor de los casos de O(n2) y en el mejor de los
casos en O(n) esto se da en el caso que el array esté ordenado.
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
6
Conclusión:
Consiste en ordenar los elementos de una array en que sus elementos
pueden estar ordenados y repetidos. Este método en lo que se basa
principalmente es en hacer sucesivas comparaciones, definiendo con
anterioridad el criterio de comparación.
El algoritmo de este ordenamiento es relativamente sencillo y se
adapta de buena manera en gran cantidad de situaciones en la vida
real, por ejemplo: ordenar carpetas o una mano de naipes en el póker.
Método ordenamiento por Quicksort
Complejidad:
Es el algoritmo de ordenación más rápido conocido su tiempo de
ejecución en promedio es de O(N Log(N)) y en el peor de los casos se
tarda O (N2). En su práctica, el hecho por el cual es el más rápido
que los demás métodos de ordenación está dado por un ciclo interno
en el cual cuenta con muy pocas operaciones.
Conclusión:
Luego de analizarse el método se puede ver que es uno de los mejores
métodos de ordenación, a pesar no ser tan sencilla (tampoco es tan
complicada) es un algoritmo con una estructura elegante y con buena
eficiencia. Con este método queda claro que en muchas ocasiones es
mejor dividir para un óptimo desarrollo.
Método de ordenamiento Mezcla ( MergeSort):
La idea de este ordenamiento es dividir la lista a mitad de tamaño
y luego tener otras sub-listas que haremos el mismo proceso y así
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS JULIO 2015
7
sucesivamente hasta llegar partes iguales de la lista de números
para luego mezclarlos, compararlos y ordenarlos.
Complejidad:
Este ordenamiento es conocido por su tiempo de ejecución de
O(nlog(n)) en cualquiera de los casos (medio, mejor o peor). La
aplicación de este ordenamiento tiene mejor rendimiento que los demás
(Quicksort, selección, etc.), aparte que usa más espacio de memoria.
Conclusión:
Es un ordenamiento de mayor eficiencia, pero que ocupa más espacio
de memoria y a la vez demora el tiempo de ejecución que los otros
ordenamientos mencionados. También demostró un mejor rendimiento en
máquinas que se benefician de la optimización caché.

Metodos de-ordenamiento

  • 1.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 1 METODOS DE ORDENAMIENTO FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA INTEGRANTES:  William Inocencio Romero 14200091  Diego Max López Torres 14200020  Irma Ferrer Anaya 14200133  Miguel De La Cruz Acuña 14200080  Alexandra Jara Coavoy 14200168  Oncoy Corsino Yunior Efrain 14200105 PROFESOR: Santiago Moquillaza Henríquez CICLO: 2015-I UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS Decana de América, Fundada en 1551
  • 2.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 2 INTRODUCCION Los algoritmos de ordenamiento nos permiten, como su nombre lo dice, ordenar. En este caso, nos servirán para ordenar vectores o matrices con valores asignados aleatoriamente. Nos centraremos en los métodos más conocidos, analizando la cantidad de comparaciones que suceden, el tiempo que demora y revisando el código, escrito en Java, de cada algoritmo. Este informe nos permitirá conocer más a fondo cada método distinto de ordenamiento, desde uno simple hasta el más complejo. Se realizaran comparaciones en tiempo de ejecución. EL ALGORITMO Explicación del algoritmo El algoritmo Complejidad del algoritmo La complejidad
  • 3.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 3 CONCLUSIONES Método de ordenamiento por selección: Su funcionamiento es el siguiente:  Buscar el mínimo elemento de la lista  Intercambiarlo con el primero  Buscar el siguiente mínimo en el resto de la lista  Intercambiarlo con el segundo Y en general:  Buscar el mínimo elemento entre una posición i y el final de la lista  Intercambiar el mínimo con el elemento de la posición i Complejidad: Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación intercambiar () sería más costosa en este caso. Este algoritmo realiza muchas menos operaciones intercambiar () que el de la burbuja, por lo que lo mejora en algo. Si una de las líneas se sustituyera por intercambiar (lista[i], lista[j]) tendríamos una versión del algoritmo de la burbuja (naturalmente eliminando el orden intercambiar del final). Conclusiones: Respecto a otros como el de burbuja o de inserción directa es que no mejora su rendimiento cuando los datos ya están ordenados o parcialmente ordenados. Así como, por ejemplo, en el caso de la ordenación de burbuja se requeriría una única pasada para detectar que el vector ya está ordenado y finalizar, en la ordenación por selección se realizarían el mismo número de pasadas independientemente de si los datos están ordenados o no.
  • 4.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 4 Método de ordenamiento por burbuja: Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Complejidad: El ordenamiento de burbuja tiene una complejidad Ω(n²) igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como el algoritmo más ineficiente que existe, aunque para muchos programadores sea el más sencillo de implementar. Conclusiones: Puede verse que el número de repeticiones solo depende de n (términos del vector) y no del orden de los términos, esto es, si pasamos al algoritmo una lista ya ordenada, realizará todas las comparaciones exactamente igual que para una lista no ordenada. Esta es una característica de este algoritmo. Método de ordenamiento por Shell: Complejidad:
  • 5.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 5 El algoritmo de Shell modifica los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y con ello se consigue que la ordenación sea más rápida. Generalmente se toma como salto inicial n/2 (siendo n el número de elementos), luego se reduce el salto a la mitad en cada repetición hasta que el salto es de tamaño 1. Conclusiones: El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:  El ordenamiento por inserción es eficiente si la entrada está “casi ordenada”.  El ordenamiento por inserción es ineficiente, en general, porque mueve los valores solamente una posición cada vez. El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga “pasos más grandes” hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenado. Método de ordenamiento por inserción: Complejidad: Este algoritmo es estable en su ordenación interna. Tiene como complejidad en el peor de los casos de O(n2) y en el mejor de los casos en O(n) esto se da en el caso que el array esté ordenado.
  • 6.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 6 Conclusión: Consiste en ordenar los elementos de una array en que sus elementos pueden estar ordenados y repetidos. Este método en lo que se basa principalmente es en hacer sucesivas comparaciones, definiendo con anterioridad el criterio de comparación. El algoritmo de este ordenamiento es relativamente sencillo y se adapta de buena manera en gran cantidad de situaciones en la vida real, por ejemplo: ordenar carpetas o una mano de naipes en el póker. Método ordenamiento por Quicksort Complejidad: Es el algoritmo de ordenación más rápido conocido su tiempo de ejecución en promedio es de O(N Log(N)) y en el peor de los casos se tarda O (N2). En su práctica, el hecho por el cual es el más rápido que los demás métodos de ordenación está dado por un ciclo interno en el cual cuenta con muy pocas operaciones. Conclusión: Luego de analizarse el método se puede ver que es uno de los mejores métodos de ordenación, a pesar no ser tan sencilla (tampoco es tan complicada) es un algoritmo con una estructura elegante y con buena eficiencia. Con este método queda claro que en muchas ocasiones es mejor dividir para un óptimo desarrollo. Método de ordenamiento Mezcla ( MergeSort): La idea de este ordenamiento es dividir la lista a mitad de tamaño y luego tener otras sub-listas que haremos el mismo proceso y así
  • 7.
    UNIVERSIDAD NACIONAL MAYORDE SAN MARCOS JULIO 2015 7 sucesivamente hasta llegar partes iguales de la lista de números para luego mezclarlos, compararlos y ordenarlos. Complejidad: Este ordenamiento es conocido por su tiempo de ejecución de O(nlog(n)) en cualquiera de los casos (medio, mejor o peor). La aplicación de este ordenamiento tiene mejor rendimiento que los demás (Quicksort, selección, etc.), aparte que usa más espacio de memoria. Conclusión: Es un ordenamiento de mayor eficiencia, pero que ocupa más espacio de memoria y a la vez demora el tiempo de ejecución que los otros ordenamientos mencionados. También demostró un mejor rendimiento en máquinas que se benefician de la optimización caché.