1 / 56

Ordenamiento

Ordenamiento. Ordenar una estructura de datos consiste en reacomodar sus elementos de manera tal que queden ordenados de acuerdo a un atributo clave . Los algoritmos de ordenamiento resultan un tema de interés por varios motivos:

Download Presentation

Ordenamiento

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ordenamiento Ordenar una estructura de datos consiste en reacomodar sus elementos de manera tal que queden ordenados de acuerdo a un atributo clave. Los algoritmos de ordenamiento resultan un tema de interés por varios motivos: • Son importantes en diversas aplicaciones, en particular en el área de Bases de Datos, en donde los requirimientos de eficiencia hacen del ordenamiento un tema crítico. • Existen muchísimos métodos para resolver el mismo problema y por lo tanto es un tema interesante para introducir nociones de tiempo de ejecución y eficiencia. • Permiten ilustrar temas importantes de Resolución de Problemas. Introducción a la Programación Orientada a Objetos

  2. Ordenamiento: Merge Sort El método del Merge Sort consiste en partir una estructura en mitades, ordenar cada mitad y luego intercalar ordenadamente ambas mitades. Cada mitad se ordena aplicando el mismo método. Introducción a la Programación Orientada a Objetos

  3. Ordenamiento: Merge Sort Dividir en “mitades” Ordenar la primera mitad Ordenar la segunda mitad Intercalar las mitades ordenadas Introducción a la Programación Orientada a Objetos

  4. Ordenamiento: Merge Sort 7 4 2 9 5 11 9 1 8 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  5. Ordenamiento: Merge Sort si la estructura tiene más de dos elementos Dividir en “mitades” Ordenar la primera mitad Ordenar la segunda mitad Intercalar las mitades ordenadas sino Comparar e intercambiar Observemos que este algoritmo NO depende: • Del lenguaje de programación • Del tipo de componentes Introducción a la Programación Orientada a Objetos

  6. Ordenamiento: Merge Sort 7 > 4 7 4 2 9 5 11 9 1 8 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  7. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  8. Ordenamiento: Merge Sort 2 < 9 4 7 2 9 5 11 9 1 8 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  9. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  10. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 Intercalar 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  11. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  12. Ordenamiento: Merge Sort 5 < 11 2 4 7 9 5 11 9 1 8 1-4 5-6 1-9 5-9 7-9 Introducción a la Programación Orientada a Objetos

  13. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 1-4 5-6 1-9 5-9 7-9 Introducción a la Programación Orientada a Objetos

  14. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 1-4 5-6 1-9 7-7 5-9 7-9 8-9 Introducción a la Programación Orientada a Objetos

  15. Ordenamiento: Merge Sort 1 < 8 2 4 7 9 5 11 9 1 8 1-4 5-6 1-9 7-7 5-9 7-9 8-9 Introducción a la Programación Orientada a Objetos

  16. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 1-4 Intercalar 5-6 1-9 7-7 5-9 7-9 8-9 Introducción a la Programación Orientada a Objetos

  17. Ordenamiento: Merge Sort 2 4 7 9 5 11 1 8 9 1-4 Intercalar 5-6 1-9 5-9 7-9 Introducción a la Programación Orientada a Objetos

  18. Ordenamiento: Merge Sort 2 4 7 9 5 11 1 8 9 Intercalar 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  19. Ordenamiento: Merge Sort 2 4 7 9 1 5 8 9 11 Intercalar 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  20. Ordenamiento: Merge Sort 2 4 7 9 1 5 8 9 11 Intercalar 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  21. Ordenamiento: Merge Sort 1 2 4 5 7 8 9 9 11 1-9 Introducción a la Programación Orientada a Objetos

  22. Ordenamiento: Merge Sort Algoritmo MergeSort si la cantidad de componentes es menor o igual a 2 Comparar Intercambiar sino Dividir en mitades MergeSort primera mitad MergeSort segunda mitad Intercalar las mitades ordenadas Introducción a la Programación Orientada a Objetos

  23. Ordenamiento: Merge Sort Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin Introducción a la Programación Orientada a Objetos

  24. Ordenamiento: Merge Sort Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin Introducción a la Programación Orientada a Objetos

  25. Ordenamiento: Merge Sort 7 4 2 9 5 11 9 1 8 MergeSort (1,9) MergeSort (1,4) MergeSort (5,9) 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  26. Ordenamiento: Merge Sort 2 4 7 9 1 5 8 9 11 1 2 4 5 7 8 9 9 11 MergeSort (1,9) MergeSort (1,4) MergeSort (5,9) Intercalar (1,4,5,9) 1-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  27. Ordenamiento: Merge Sort 7 4 2 9 5 11 9 1 8 CompararIntercambiar MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  28. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  29. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  30. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  31. Ordenamiento: Merge Sort 4 7 2 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  32. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  33. Ordenamiento: Merge Sort 2 4 7 9 5 11 9 1 8 MergeSort (1,4) MergeSort (1,2) MergeSort (3,4) Intercalar (1,2,3,4) 1-2 1-4 3-4 1-9 5-9 Introducción a la Programación Orientada a Objetos

  34. Ordenamiento: Merge Sort Algoritmo MergeSort si la cantidad de componentes es menor o igual a 2 Comparar Intercambiar sino Dividir en mitades MergeSort primera mitad MergeSort segunda mitad Intercalar las mitades ordenadas Introducción a la Programación Orientada a Objetos

  35. Ordenamiento: Merge Sort Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin Introducción a la Programación Orientada a Objetos

  36. Ordenamiento: Merge Sort Algoritmo Intercalar DE i1,n1,i2,n2 crear aux con n2-i1+1 elementos mientras i1 <= n1 y i2 <= n2 si Ti1es menor que Ti2 agregar Ti1 al final de aux i1++ sino agregar Ti2 al final de aux i2++ … Introducción a la Programación Orientada a Objetos

  37. Ordenamiento: Merge Sort El método intercalar se implementa utilizando la misma estrategia que hemos propuesto antes para intercalar dos estructuras ordenadas, solo que ahora se intercalan las dos mitades de una estructura. Recordemos que al intercalar dos estructuras se genera una tercera en la cual los elementos se agregan al final. En la implementación en Java este método es privado, solo es accesible dentro de la clase. Introducción a la Programación Orientada a Objetos

  38. Ordenamiento: Merge Sort Algoritmo Intercalar DE i1,n2,i2,n2 … mientras i1 <= n1 agregar Ti1 al final de aux i1++ mientras i2 <= n2 agregar Ti2 al final de aux i2++ para i entre 1 y n2-i1+1 Ti1+i= auxi Introducción a la Programación Orientada a Objetos

  39. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  40. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  41. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  42. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  43. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 1 2 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  44. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 1 2 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  45. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  46. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 3 4 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  47. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin mitad 1 9 5 1 4 3 3 4 0 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  48. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin 1 9 1 4 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

  49. Ordenamiento: Merge Sort 8 4 7 9 5 11 1 8 3 4 8 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin 1 9 1 4 MergeSort(1,9) i2 n2 i1 n1 3 4 1 2 Introducción a la Programación Orientada a Objetos

  50. Ordenamiento: Merge Sort 8 4 8 9 5 11 1 3 8 4 7 Algoritmo MergeSort DE ini,fin si ini+1 = fin si Tini es mayor que Tfin intercambiarTini , Tfin sino si ini < fin Mitad = (ini+fin) div 2 MergeSort ini,Mitad-1 MergeSort Mitad,fin Intercalar ini,Mitad-1,Mitad,fin ini fin 1 9 5 9 MergeSort(1,9) Introducción a la Programación Orientada a Objetos

More Related