La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado.

Presentaciones similares


Presentación del tema: "Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado."— Transcripción de la presentación:

1 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

2 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 Métodos de ordenación

3 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 i se habrán ordenado las i primeras posiciones de la tabla Ordenación por selección

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

5 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 Ordenación por selección

6 Primera iteración 1 3 95 8375 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 Ordenación por selección

7 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 Ordenación por selección

8 Tercera iteración 1 3 95 83 75 Cuarta iteración 1 3 75 83 95 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 Ordenación por selección

9 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 83 95 Ordenación por selección

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

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 si v[k] < v[jmin] entonces jmin := k fsi fpara si jmin > j entonces aux := v[jmin]; v[jmin] := v[j]; v[j] := aux fsi fpara falgoritmo

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

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) si jmin > j entonces Intercambiar (a, j, jmin) fsi fpara facción Ordenación por selección

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

16 acción Intercambiar (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] de palabra palabra = tabla [1..Numc] de cará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/s tp: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ón Mínimo (ent tp: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/s tp:tpalabra, ent j,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ón EscribirPalabras (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] de persona persona = tupla dni, edat : entero apellido1,apellido2 : palabra ftupla palabra = tabla [1..Numc] de cará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/s tp: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ón Mínimo (ent tp:tpersona, ent j, n:entero) retorna entero var k, min: entero fvar min := j para k en [ j+1.. n] hacer si tp[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/s tp:tpersona, ent j,k :entero) var aux: persona fvar aux := tp[j] tp[j] := tp[k] tp[k]:= aux facción Ordenación por selección


Descargar ppt "Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado."

Presentaciones similares


Anuncios Google