definición: reorganizar un conjunto dado de objetos en una secuencia especificada

28
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

Upload: cisco

Post on 14-Jan-2016

41 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

• 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

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

• 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

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

• 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

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

• 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

Ordenación por selección

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

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

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

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

Ordenación por selección

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

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

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

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

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

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

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

para j en [1..n-1] hacer

“ asignar a jmin el índice correspondiente al elemento con clave mínima de aj .. an ”

“ intercambiar aj y ajmin “

fpara

Ordenación por selección

ALGORITMO GENERAL

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

algoritmo Ordenación

const

N: entero = 25

fconst

tipos

vector = tabla [1..N] de entero

ftipos

var

v: vector; j, jmin, aux: entero

fvar

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

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

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

const

Num: entero = 25

fconst

tipos

vector = tabla [1..Num] de entero

ftipos

Ordenación por selección

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ftiposOrdenación por selección

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

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

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

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

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

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

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

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