Presentación               Ordenación  Ing. Mauricio Paletta, Msc     INGENIERÍA EN INFORMÁTICA                  Programac...
IntroducciónOrdenación    proceso de ordenamiento dedatos siguiendo un criterio específico (menora mayor o ascendente, may...
Introducción        Programación II
Algoritmos1) Por selección.2) De burbuja.3) Por inserción.4) Por incrementos (Shell-sort).5) Por mezcla (Merge-sort).6) Po...
Ordenación por Selección• En cada iteración se busca el elemento  más pequeño (grande o según el criterio de  ordenación) ...
Ordenación por Selección              Programación II
Ordenación por Selección              Programación II
Ordenación por Selección              Programación II
Ordenación por Selección• Ejemplo:                   Programación II
Ordenación por Selección• Dos ciclos de orden lineal: 1) para buscar el  próximo elemento según el criterio y 2) para  cub...
Ordenación de Burbuja• En cada iteración se busca el elemento  más pequeño (grande o según el criterio de  ordenación) y s...
Ordenación de Burbuja             Programación II
Ordenación de Burbuja             Programación II
Ordenación de Burbuja             Programación II
Ordenación de Burbuja• Ejemplo:                   Programación II
Ordenación de Burbuja• Dos ciclos de orden lineal: 1) para cubrir  todos los espacios del conjunto y 2) para  burbujear el...
Ordenación por Inserción• En cada iteración se busca el elemento  más pequeño (grande o según el criterio de  ordenación) ...
Ordenación por Inserción              Programación II
Ordenación por Inserción              Programación II
Ordenación por Inserción• Ejemplo:                   Programación II
Ordenación por Inserción              Programación II
Ordenación por Inserción• Ejemplo:                   Programación II
Ordenación por Inserción• El orden del algoritmo es O(n2). Si el  conjunto ya está ordenado (mejor caso) el  orden del alg...
Ordenación por Incrementos (Shell-sort)  • Donald Shell; “A High-Speed Procedure”,    Communications of the ACM, vol. 2, N...
Ordenación por Incrementos (Shell-sort)  • Luego de ordenar estos pequeños    subgrupos, se repite el proceso esta vez    ...
Ordenación por Incrementos (Shell-sort)                      Programación II
Ordenación por Incrementos (Shell-sort)  • Ejemplo:                      Programación II
Ordenación por Incrementos (Shell-sort)  • El análisis general del algoritmo sigue    siendo un problema abierto.  • El re...
Ordenación por Mezcla (Merge-sort)• Mezcla (merge) consiste en unir dos  conjuntos de datos.• En este caso se tienen dos c...
Ordenación por Mezcla (Merge-sort)                   Programación II
Ordenación por Mezcla (Merge-sort)                   Programación II
Ordenación por Mezcla (Merge-sort)• Ejemplo:                   Programación II
Ordenación por Mezcla (Merge-sort)• Dado lo recursivo del algoritmo su análisis  no es sencillo. La parte de la mezcla tie...
Ordenación por Montículos (Heapsort) • Un montículo es una estructura tipo árbol   binario que garantiza que en la cima   ...
Ordenación por Montículos (Heapsort)                    Programación II
Ordenación por Montículos (Heapsort) • Ejemplo:                    Programación II
Ordenación por Montículos (Heapsort) • Ejemplo:                    Programación II
Ordenación por Montículos (Heapsort) • Ejemplo:                    Programación II
Ordenación por Montículos (Heapsort) • Construir el montículo tiene una   complejidad de O(n); las n eliminaciones   repre...
Ordenación Rápida (Quicksort)• Desarrollado por C.A.R. Hoare en 1962.• La idea básica es acomodar el conjunto en  dos part...
Ordenación Rápida (Quicksort)                 Programación II
Ordenación Rápida (Quicksort)                 Programación II
Ordenación Rápida (Quicksort)• Ejemplo:                   Programación II
Ordenación Rápida (Quicksort)• Ejemplo: (Partition)                   Programación II
Ordenación Rápida (Quicksort)• La estimación de la complejidad del  algoritmo es O(n log n). El mejor escenario  se da cua...
Próxima SlideShare
Cargando en…5
×

Ordenacion

1.277 visualizaciones

Publicado el

Recursion | Lenguaje C++ | Profesor Mauricio Paletta

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.277
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
45
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Ordenacion

  1. 1. Presentación Ordenación Ing. Mauricio Paletta, Msc INGENIERÍA EN INFORMÁTICA Programación II Coordinación General de PregradoUNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  2. 2. IntroducciónOrdenación proceso de ordenamiento dedatos siguiendo un criterio específico (menora mayor o ascendente, mayor a menor odescendente, otros).Muy común en el desarrollo de algoritmos yprogramas.Se le ha dedicado tiempo y esfuerzo para suestudio. Programación II
  3. 3. Introducción Programación II
  4. 4. Algoritmos1) Por selección.2) De burbuja.3) Por inserción.4) Por incrementos (Shell-sort).5) Por mezcla (Merge-sort).6) Por montículos (Heapsort).7) Rápida (Quicksort) Programación II
  5. 5. Ordenación por Selección• En cada iteración se busca el elemento más pequeño (grande o según el criterio de ordenación) y se ubica en la posición correspondiente.• Se hace un intercambio de posiciones entre el elemento encontrado y aquél que ocupa el puesto que el primero debe ocupar.• Se repite tantas veces como sea necesario. Programación II
  6. 6. Ordenación por Selección Programación II
  7. 7. Ordenación por Selección Programación II
  8. 8. Ordenación por Selección Programación II
  9. 9. Ordenación por Selección• Ejemplo: Programación II
  10. 10. Ordenación por Selección• Dos ciclos de orden lineal: 1) para buscar el próximo elemento según el criterio y 2) para cubrir todos los espacios del conjunto.• Orden del algoritmo O(n2). Programación II
  11. 11. Ordenación de Burbuja• En cada iteración se busca el elemento más pequeño (grande o según el criterio de ordenación) y se ubica en la posición correspondiente. Programación II
  12. 12. Ordenación de Burbuja Programación II
  13. 13. Ordenación de Burbuja Programación II
  14. 14. Ordenación de Burbuja Programación II
  15. 15. Ordenación de Burbuja• Ejemplo: Programación II
  16. 16. Ordenación de Burbuja• Dos ciclos de orden lineal: 1) para cubrir todos los espacios del conjunto y 2) para burbujear el próximo elemento según el criterio.• Orden del algoritmo O(n2). Programación II
  17. 17. Ordenación por Inserción• En cada iteración se busca el elemento más pequeño (grande o según el criterio de ordenación) y se ubica en la posición correspondiente, aprovechando el ordenamiento parcial del subconjunto ya procesado. Programación II
  18. 18. Ordenación por Inserción Programación II
  19. 19. Ordenación por Inserción Programación II
  20. 20. Ordenación por Inserción• Ejemplo: Programación II
  21. 21. Ordenación por Inserción Programación II
  22. 22. Ordenación por Inserción• Ejemplo: Programación II
  23. 23. Ordenación por Inserción• El orden del algoritmo es O(n2). Si el conjunto ya está ordenado (mejor caso) el orden del algoritmo es O(n). Programación II
  24. 24. Ordenación por Incrementos (Shell-sort) • Donald Shell; “A High-Speed Procedure”, Communications of the ACM, vol. 2, N 7, 1959, pp. 30-32. • Se puede ver como una ordenación por inserción con un enfoque de divide y vencerás. • En lugar de ordenar todo el conjunto desde el comienzo, se ordenan primero pequeños subgrupos utilizando el método de inserción. Programación II
  25. 25. Ordenación por Incrementos (Shell-sort) • Luego de ordenar estos pequeños subgrupos, se repite el proceso esta vez con grupos más grandes (un aproximado del doble de elementos de los grupos iniciales). • Finalmente se ordena el conjunto total con el método de inserción. Programación II
  26. 26. Ordenación por Incrementos (Shell-sort) Programación II
  27. 27. Ordenación por Incrementos (Shell-sort) • Ejemplo: Programación II
  28. 28. Ordenación por Incrementos (Shell-sort) • El análisis general del algoritmo sigue siendo un problema abierto. • El rendimiento depende de cómo se elija la secuencia decreciente de los intervalos. Por ejemplo, para potencias sucesivas de 2 (32, 16, 8, 4, 2, 1) es O(n2). Para el caso 2k – 1 (31, 15, 7, 3, 1) – secuencia de Hibbard -se puede probar que el desempeño es O(n3/2) Programación II
  29. 29. Ordenación por Mezcla (Merge-sort)• Mezcla (merge) consiste en unir dos conjuntos de datos.• En este caso se tienen dos conjuntos ordenados y se desea obtener un tercer conjunto ordenado que contenga las dos primeras secuencias ordenadas. Programación II
  30. 30. Ordenación por Mezcla (Merge-sort) Programación II
  31. 31. Ordenación por Mezcla (Merge-sort) Programación II
  32. 32. Ordenación por Mezcla (Merge-sort)• Ejemplo: Programación II
  33. 33. Ordenación por Mezcla (Merge-sort)• Dado lo recursivo del algoritmo su análisis no es sencillo. La parte de la mezcla tiene orden igual a O(i) donde i es el tamaño actual del conjunto. La profundidad de la recursión es log n para n elementos. Luego la complejidad del algoritmo se puede estimar en O(n log n). Programación II
  34. 34. Ordenación por Montículos (Heapsort) • Un montículo es una estructura tipo árbol binario que garantiza que en la cima siempre está el elemento mayor. • Si se van eliminando los elementos de la cima y se va rearmando el montículo adecuadamente se puede ir ordenando el conjunto de mayor a menor. Programación II
  35. 35. Ordenación por Montículos (Heapsort) Programación II
  36. 36. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  37. 37. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  38. 38. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  39. 39. Ordenación por Montículos (Heapsort) • Construir el montículo tiene una complejidad de O(n); las n eliminaciones representan un orden de O(log n) cada una; luego la complejidad del algoritmo es O(n log n). • A diferencia de los otros algoritmos, siempre se conoce el mayor elemento del conjunto parcialmente ordenado. Programación II
  40. 40. Ordenación Rápida (Quicksort)• Desarrollado por C.A.R. Hoare en 1962.• La idea básica es acomodar el conjunto en dos partes de manera tal que todos los elementos del subconjunto izquierdo sean menores que los del subconjunto derecho.• El elemento que establece la división se llama pivote.• El proceso se repite recursivamente hasta lograr el ordenamiento total del conjunto. Programación II
  41. 41. Ordenación Rápida (Quicksort) Programación II
  42. 42. Ordenación Rápida (Quicksort) Programación II
  43. 43. Ordenación Rápida (Quicksort)• Ejemplo: Programación II
  44. 44. Ordenación Rápida (Quicksort)• Ejemplo: (Partition) Programación II
  45. 45. Ordenación Rápida (Quicksort)• La estimación de la complejidad del algoritmo es O(n log n). El mejor escenario se da cuando la función Findpivot divide el conjunto en dos partes de igual tamaño.• Un peor escenario se tiene cuando los valores del pivote se seleccionan aleatoriamente (caso inusual). De ser así el algoritmo es O(n2). Programación II

×