1 / 28

Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada

Métodos de ordenación. Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado. Métodos de ordenación. Los métodos óptimos para ordenar un número pequeño de elementos: Ordenación por selección

cisco
Download Presentation

Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada

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. Métodos de ordenación • Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada • Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado

  2. Métodos de ordenación • Los métodos óptimos para ordenar un número pequeño de elementos: • Ordenación por selección • Ordenación por insercción directa • Ordenación mediante el método de la burbuja • Utilizan un sola tabla • Para ordenar valores grandes existen mejoras de estos tres métodos

  3. Ordenación por selección • Ordena una tabla de n elementos en n-1 iteracciones • Inicialmente no hay posiciones ordenadas • En cada iteracción se ordena una nueva posición de la tabla • En la iteración ise habrán ordenado las iprimeras posiciones de la tabla

  4. Ordenación por selección • Operaciones básicas: • Selecciona el elemento con clave mínima • Intercambio con el primer elemento, a1 • Se repiten estas operaciones con los elementos n-1, n-2, ..., restantes hasta que quede un único elemento, que queda ya ordenado

  5. Ordenación por selección Posición inicial 95 3 1 83 75 |----------------| Primera iteración 1 3 95 83 75 Se ordena la primera posición • Se busca el mínimo entre todos los elementos • Se intercambian el primer valor y el valor mínimo

  6. Ordenación por selección Primera iteración 1 3 95 83 75 Segunda iteración 1 3 95 83 75 Se ordena la segunda posición • Se busca el mínimo entre los elementos que están entre la segunda y la última posición • No se realiza ningún cambio, porque el valor mínimo es el que está en la posición a ordenar

  7. Ordenación por selección Segunda iteración 1 3 95 83 75 |------------------| Tercera iteración 1 3 75 83 95 Se ordena la tercera posición • Se busca el mínimo entre los elementos que están entre la tercera y la última posición • Se intercambia el valor de la tercera posición y el valor mínimo

  8. Ordenación por selección Tercera iteración 1 3 95 83 75 Cuarta iteración 1 3 75 8395 Se ordena la cuarta posición • Se busca el mínimo entre los elementos que están entre la cuarta y la última posición • No se realiza ningún cambio, porque el valor mínimo es el que está en la posición a ordenar La última posición queda ordenada

  9. Ordenación por selección Posición inicial 95 3 1 83 75 |----------------| Primera iteración 1 3 95 83 75 Segunda iteración 1 3 95 83 75 |------------------| Tercera iteración 1 3 75 83 95 Cuarta iteración 1 3 75 8395

  10. Ordenación por selección ALGORITMO GENERAL para j en [1..n-1] hacer “ asignar a jmin el índice correspondiente al elemento con clave mínima de aj .. an ” “ intercambiar ajy ajmin “ fpara

  11. algoritmo Ordenación const N: entero = 25 fconst tipos vector = tabla[1..N] de entero ftipos var v: vector; j, jmin, aux: entero fvar

  12. para j en [1.. n-1] hacer jmin := j para k en [j+1.. n] hacer siv[k] < v[jmin] entonces jmin := k fsi fpara sijmin > j entonces aux := v[jmin]; v[jmin] := v[j]; v[j] := aux fsi fpara falgoritmo

  13. Ordenación por selección const Num: entero = 25 fconst tipos vector = tabla[1..Num] deentero ftipos

  14. acción Ord_selección (e/s a: vector, ent n: entero) var j, jmin: entero fvar para j en [1.. n-1] hacer jmin := Mínimo ( a, j, n) sijmin > j entonces Intercambiar (a, j, jmin) fsi fpara facción Ordenación por selección

  15. funciónMínimo (ent a: vector, ent j, n:entero) retorna entero var k, min: entero fvar min := j para k en [j+1.. n] hacer sia[k] < a[min] entonces min := k fsi fpara retorna min ffunción Ordenación por selección

  16. acciónIntercambiar (e/s a: vector, ent j, k: entero) var aux: entero fvar aux := a[j] a[j] := a[k] a[k] := aux facción Ordenación por selección

  17. algoritmo Ordenación_palabras const Numc: entero = 25 Nump: entero = 100 fconst tipos tpalabra = tabla[1..Nump] depalabra palabra = tabla[1..Numc] decarácter ftipos Ordenación por selección

  18. algoritmo Ordenación_palabras Definición de tipos var tp: tpalabra j, dim : entero fvar LeerPalabras ( tp, dim) Ord_selección ( tp, dim ) EscribirPalabras ( tp, dim) falgoritmo Ordenación por selección

  19. acción Ord_selección (e/stp:tpalabra, ent n:entero) var j, jmin: entero fvar para j en [1.. n-1] hacer jmin := Mínimo(tp, j, n) si jmin > j entonces Intercambiar (tp, j, jmin) fsi fpara facción Ordenación por selección

  20. funciónMínimo (enttp:tpalabra, ent j, n:entero) retorna entero var k, min: entero fvar min := j para k en [ j+1.. n] hacer si tp[k] < tp[min] entonces min := k fsi fpara retorna min ffunción Ordenación por selección

  21. acción Intercambiar(e/stp:tpalabra, entj,k:entero) var aux: palabra fvar aux := tp[j] tp[j] := tp[k] tp[k]:= aux facción Ordenación por selección

  22. acción LleerPalabras(sal tp:tpalabra,sal n:entero) n := 1 tp[n] := LeerPalabra() mientras tp[n] != "." hacer n := n+1 tp[n] := LeerPalabra() fmientras n := n-1 facción Ordenación por selección

  23. acciónEscribirPalabras (ent tp:tpalabra, ent n:entero) var j : entero fvar para j en [1.. n] hacer EscribirPalabra (tp[j]) fpara facción Ordenación por selección

  24. const Numc: entero = 25 Nump: entero = 100 fconst tipos tpersona = tabla[1..Nump] depersona persona = tupla dni, edat : entero apellido1,apellido2 : palabra ftupla palabra = tabla[1..Numc] decarácter ftipos Ordenación por selección

  25. algoritmo Ordenación_personas Definición de tipos var tp: tpersona j, dim : entero fvar LeerPersonas ( tp, dim) Ord_selección ( tp, dim ) EscribirPersonas ( tp, dim) falgoritmo Ordenación por selección

  26. acción Ord_selección (e/stp:tpersona, ent n:entero) var j, jmin: entero fvar para j en [1.. n-1] hacer jmin := Mínimo(tp, j, n) si jmin > j entonces Intercambiar (tp, j, jmin) fsi fpara facción Ordenación por selección

  27. funciónMínimo (enttp:tpersona, ent j, n:entero) retorna entero var k, min: entero fvar min := j para k en [ j+1.. n] hacer sitp[k].apellido1 < tp[min].apellido1 o (tp[k].apellido1 = tp[min].apellido1 i tp[k].apellido2 < tp[min].apellido2)entonces min := k fsi fpara retorna min ffunción Ordenación por selección

  28. acción Intercambiar(e/stp:tpersona, entj,k:entero) var aux: persona fvar aux := tp[j] tp[j] := tp[k] tp[k]:= aux facción Ordenación por selección

More Related