“ PROPUESTA PARA REORGANIZAR EL SISTEMA DE INFORMACION SISMED: Captura y Comunicación de Datos ”
Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada
description
Transcript of 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
• 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
• 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
• 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
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
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
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
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
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
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
algoritmo Ordenación
const
N: entero = 25
fconst
tipos
vector = tabla [1..N] de entero
ftipos
var
v: vector; j, jmin, aux: entero
fvar
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
const
Num: entero = 25
fconst
tipos
vector = tabla [1..Num] de entero
ftipos
Ordenación por selección
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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