SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Presentación




               Ordenación

  Ing. Mauricio Paletta, Msc
     INGENIERÍA EN INFORMÁTICA
                  Programación II




          Coordinación General de Pregrado
UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

                               Programación II
Introducción

Ordenación    proceso de ordenamiento de
datos siguiendo un criterio específico (menor
a mayor o ascendente, mayor a menor o
descendente, otros).
Muy común en el desarrollo de algoritmos y
programas.
Se le ha dedicado tiempo y esfuerzo para su
estudio.


                        Programación II
Introducción




        Programación II
Algoritmos

1) 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
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
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
  cubrir todos los espacios del conjunto.
• Orden del algoritmo   O(n2).




                         Programación II
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
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 próximo elemento según el
  criterio.
• Orden del algoritmo   O(n2).




                         Programación II
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
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 algoritmo es O(n).




                        Programación II
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
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
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 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
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
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 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
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
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
   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
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
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 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

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (12)

Metodo burbuja C++
Metodo burbuja C++Metodo burbuja C++
Metodo burbuja C++
 
Programacion arreglos diapositivas
Programacion arreglos diapositivasProgramacion arreglos diapositivas
Programacion arreglos diapositivas
 
Arreglos-Programacion
Arreglos-ProgramacionArreglos-Programacion
Arreglos-Programacion
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos - Programación I
Arreglos - Programación IArreglos - Programación I
Arreglos - Programación I
 
12 Arreglos
12 Arreglos12 Arreglos
12 Arreglos
 
Programación 1: estructuras de datos
Programación 1: estructuras de datosProgramación 1: estructuras de datos
Programación 1: estructuras de datos
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Arreglos
ArreglosArreglos
Arreglos
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
 

Ähnlich wie Ordenacion

Ordena 2en1
Ordena 2en1Ordena 2en1
Ordena 2en1gato2169
 
Tema 2 busqueda_ordenacion_grupo_21
Tema 2 busqueda_ordenacion_grupo_21Tema 2 busqueda_ordenacion_grupo_21
Tema 2 busqueda_ordenacion_grupo_21Carlos A. Iglesias
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksortPatricia Correa
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Practica 01 Pruebas a posteriori.pptx
Practica 01 Pruebas a posteriori.pptxPractica 01 Pruebas a posteriori.pptx
Practica 01 Pruebas a posteriori.pptxssuserf7367f
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datos
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datosED Unidad 2: Recursividad, ordenamiento y búsqueda de datos
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datosFranklin Parrales Bravo
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmosAlvaro Enrique Ruano
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfjorgeulises3
 
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...Victoria López
 
AlgoritmosBusquedasenJAVA09der343485.ppt
AlgoritmosBusquedasenJAVA09der343485.pptAlgoritmosBusquedasenJAVA09der343485.ppt
AlgoritmosBusquedasenJAVA09der343485.pptlpaternina2022
 

Ähnlich wie Ordenacion (20)

S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Tema5
Tema5Tema5
Tema5
 
Ordena 2en1
Ordena 2en1Ordena 2en1
Ordena 2en1
 
Tema 2 busqueda_ordenacion_grupo_21
Tema 2 busqueda_ordenacion_grupo_21Tema 2 busqueda_ordenacion_grupo_21
Tema 2 busqueda_ordenacion_grupo_21
 
1_Metodos.doc
1_Metodos.doc1_Metodos.doc
1_Metodos.doc
 
Algoritmos II_2020.pdf
Algoritmos II_2020.pdfAlgoritmos II_2020.pdf
Algoritmos II_2020.pdf
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Practica 01 Pruebas a posteriori.pptx
Practica 01 Pruebas a posteriori.pptxPractica 01 Pruebas a posteriori.pptx
Practica 01 Pruebas a posteriori.pptx
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datos
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datosED Unidad 2: Recursividad, ordenamiento y búsqueda de datos
ED Unidad 2: Recursividad, ordenamiento y búsqueda de datos
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Bus99
Bus99Bus99
Bus99
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
 
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...
Una visión de las técnicas y métodos de análisis en entornos Big Data utiliza...
 
AlgoritmosBusquedasenJAVA09der343485.ppt
AlgoritmosBusquedasenJAVA09der343485.pptAlgoritmosBusquedasenJAVA09der343485.ppt
AlgoritmosBusquedasenJAVA09der343485.ppt
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 

Mehr von karlalopezbello

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetoskarlalopezbello
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2karlalopezbello
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1karlalopezbello
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-karlalopezbello
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacionkarlalopezbello
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtualkarlalopezbello
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_karlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 

Mehr von karlalopezbello (20)

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-
 
Didactica del chat
Didactica del chatDidactica del chat
Didactica del chat
 
Didactica del foro
Didactica del foroDidactica del foro
Didactica del foro
 
Guia completa de_moodle
Guia completa de_moodleGuia completa de_moodle
Guia completa de_moodle
 
Publicacion de material
Publicacion de materialPublicacion de material
Publicacion de material
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacion
 
Actividades en moodle
Actividades en moodleActividades en moodle
Actividades en moodle
 
Plataforma moodle
Plataforma moodlePlataforma moodle
Plataforma moodle
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtual
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Transparencias7
Transparencias7Transparencias7
Transparencias7
 

Ordenacion

  • 1. Presentación Ordenación Ing. Mauricio Paletta, Msc INGENIERÍA EN INFORMÁTICA Programación II Coordinación General de Pregrado UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  • 2. Introducción Ordenación proceso de ordenamiento de datos siguiendo un criterio específico (menor a mayor o ascendente, mayor a menor o descendente, otros). Muy común en el desarrollo de algoritmos y programas. Se le ha dedicado tiempo y esfuerzo para su estudio. Programación II
  • 3. Introducción Programación II
  • 4. Algoritmos 1) 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. 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. Ordenación por Selección Programación II
  • 7. Ordenación por Selección Programación II
  • 8. Ordenación por Selección Programación II
  • 9. Ordenación por Selección • Ejemplo: Programación II
  • 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. 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. Ordenación de Burbuja Programación II
  • 13. Ordenación de Burbuja Programación II
  • 14. Ordenación de Burbuja Programación II
  • 15. Ordenación de Burbuja • Ejemplo: Programación II
  • 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. 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. Ordenación por Inserción Programación II
  • 19. Ordenación por Inserción Programación II
  • 20. Ordenación por Inserción • Ejemplo: Programación II
  • 21. Ordenación por Inserción Programación II
  • 22. Ordenación por Inserción • Ejemplo: Programación II
  • 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. 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. 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. Ordenación por Incrementos (Shell-sort) Programación II
  • 27. Ordenación por Incrementos (Shell-sort) • Ejemplo: Programación II
  • 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. 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. Ordenación por Mezcla (Merge-sort) Programación II
  • 31. Ordenación por Mezcla (Merge-sort) Programación II
  • 32. Ordenación por Mezcla (Merge-sort) • Ejemplo: Programación II
  • 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. 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. Ordenación por Montículos (Heapsort) Programación II
  • 36. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  • 37. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  • 38. Ordenación por Montículos (Heapsort) • Ejemplo: Programación II
  • 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. 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
  • 43. Ordenación Rápida (Quicksort) • Ejemplo: Programación II
  • 44. Ordenación Rápida (Quicksort) • Ejemplo: (Partition) Programación II
  • 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