Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
d de d ordenacin
d i interna
i
Introduccin
Ordenar: Proceso de reorganizar un conjunto dado,
de objetos similares, en una secuencia especificada.
Objetivo fundamental: Facilitar la bsqueda de
cualquier elemento de dicho conjunto (es mucho ms
fcil
c een uun co
conjunto
ju o oordenado).
de ado).
Las tcnicas de ordenacin son un ejemplo muy
ilustrativo sobre las ideas implicadas en el anlisis de
rendimiento de algoritmos que permitan la eleccin
adecuada de los mismos.
mismos
2
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Introduccin
Definicin formal del problema:
Se toman n elementos R1, R2, R3, ..., Rn, para ordenarlos.
Cada Rn se denomina registro y al conjunto de los n registros, fichero.
Cada registro Ri, tiene una clave Ki, que determina el orden.
orden
El registro puede contener informacin adicional que no tiene ningn efecto
en el proceso de ordenacin y permanece en el registro.
Se especifica entre las claves una relacin de orden <,< de forma que,
que para
tres valores a, b, c se cumplen las siguientes condiciones:
1. una de las posibilidades a<b, a=b, b<a es cierta.
2
2. si a<b y b<c entonces a<c (propiedad transitiva)
transitiva).
Ordenacin: Determinar una permutacin p1, p2,..., pn de los registros que
coloque las claves en orden no decreciente.
K(p1) K(p2) (p3) .... K(pn)
3
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Introduccin
Ordenacin estable: Los registros con igual clave, mantienen su orden relativo
inicial.
Tipos de ordenacin en funcin de la memoria:
Ordenacin interna (vectores). Se almacenan en memoria. Ms rpidos.
Ordenacin externa (ficheros). Se ubican en dispositivos de almacenamiento externo.
Ms lentos.
Ordenacin in situ. Las permutaciones de los elementos a ordenar se realizan
utilizando el espacio ocupado por estos.
Tiempo de ordenacin:
Comparaciones (funcin del nmero de elementos a ordenar, n).
Desplazamientos (funcin del nmero de elementos a ordenar, n).
Mtodos de orden n2 (mtodos directos)
1. Son una introduccin a la problemtica y su estudio es til.
2. Los programas para estos mtodos son ms cortos y fciles de entender.
3. Son ms rpidos cuando el nmero de elementos es suficientemente pequeo.
No deben usarse para nmeros grandes de elementos.
4
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
5
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
ordenados
V[1] V[2] ... V[j] V[j+1] ... V[i-1] V[i] ... V[n]
V[j]<=V[i]<V[j+1]
6
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
7
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
ii=33 44 55 12 42 94 18 6 67 auxiliar=12
auxiliar 12
44 55 55 42 94 18 6 67 j=2
44 44 55 42 94 18 6 67 j=1
12 44 55 42 94 18 6 67 jj=0
i=4 12 44 55 42 94 18 6 67 auxiliar=42
12 44 55 55 94 18 6 67 j=3
12 44 44 55 94 18 6 67 j=2
12 42 44 55 94 18 6 67 j=1 V[j]<42
8
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
i=6 12 42 44 55 94 18 6 67 auxiliar=18
12 42 44 55 94 94 6 67 j=5
12 42 44 55 55 94 6 67 j=4
12 42 44 44 55 94 6 67 j=3
12 42 42 44 55 94 6 67 j=2
12 18 42 44 55 94 6 67 jj=1
9
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
i=8 6 12 18 42 44 55 94 67 auxiliar=67
6 12 18 42 44 55 94 94 j=7
6 12 18 42 44 55 67 94 j=6 V[j]<67 10
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
44m 55 12 42 94 18 6 67
i=3 44m 55 12 42 94 18 6 67
44m 55 12 42 94 18 6 67
44 55 55 42 94 18 6 67 j=2
j 2
44 44 55 42 94 18 6 67 j=1
12 44 55 42 94 18 6 67 v[izd]=12
12
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
12 44m 55 42 94 18 6 67
12m 44 55 42 94 18 6 67
12 44 55 55 94 18 6 67 j=3
12 44 44 55 94 18 6 67 j=2
12 42 44 55 94 18 6 67 v[izd]=42
13
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo insercin binaria
i=7 12 18 42m 44 55 94 6 67
12m 18 42 44 55 94 6 67
12m 18 42 44 55 94 6 67
12 18 42 44 55 94 94 67 j=6
12 18 42 44 55 55 94 67 j 5
j=5
12 18 42 44 44 94 94 67 j=4
12 18 42 42 55 94 94 67 j=3
12 18 18 42 55 94 94 67 j=2
12 12 18 42 55 94 94 67 j=1
6 12 18 42 55 94 94 67 v[izd]=6 14
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo insercin binaria
i=8 6 12 18 42m 44 55 94 67
6 12 18 42m 44 55 94 67
6 12 18 42 44 55m 94 67
6 12 18 42 44 55 94m 67
6 12 18 42 44 55 94 94 j=7
6 12 18 42 44 55 67 94 v[izd]=67
15
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
16
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
5 4 6 8 9 5 7 3 3
5 4 6 3 3 5 7 8 9
3 4 6 3 5 5 7 8 9
18
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
5 4 6 8 9 5 7 3 3
3 3 5 4 6 5 7 8 9
3 3 5 4 6 5 7 8 9
19
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
5 4 6 8 9 5 7 3 3
3 3 4 5 5 6 7 8 9
20
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo Seleccin
i=1 44 55 12 42 94 18 6 67
i=2 6 55 12 42 94 18 44 67
ii=33 6 12 55 42 94 18 44 67
i=4 6 12 18 42 94 55 44 67
i=5 6 12 18 42 94 55 44 67
i 6
i=6 6 12 18 42 44 55 94 67
i=7 6 12 18 42 44 55 94 67
6 12 18 42 44 55 67 94
23
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
3
5
Ordenacin por intercambio 7
Intercambio directo o mtodo de la burbuja 9
La base de este mtodo es la comparacin e intercambio de
pares de elementos adyacentes, hasta que todos los elementos
del vector estn ordenados
ordenados.
Para ello, se realizan varias pasadas sobre el vector, moviendo
en cada una de ellas el elemento mnimo,, hasta el extremo
izquierdo del vector.
Si se observase el vector como si estuviera en posicin vertical
en vez de
d horizontal,
h i t l los l elementos
l t se asemejanj a burbujas
b b j en
un depsito de agua, con pesos acordes al valor de los
mismos;; de cada pasada
p sobre el vector resulta la ascensin a
una burbuja hasta el nivel del peso que le corresponde.
24
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
25
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo burbuja
i=2 44 55 12 42 94 18 6 67 j=8
44 55 12 42 94 18 6 67 j=7
44 55 12 42 94 6 18 67 j=6
44 55 12 42 6 94 18 67 j=5
44 55 12 6 42 94 18 67 j=4
44 55 6 12 42 94 18 67 j=3
44 6 55 12 42 94 18 67 jj=2
6 44 55 12 42 94 18 67
26
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo burbuja
i=3 6 44 55 12 42 94 18 67 j=8
6 44 55 12 42 94 18 67 j=7
6 44 55 12 42 18 94 67 j 6
j=6
6 44 55 12 18 42 94 67 jj=5
6 44 55 12 18 42 94 67 j=4
6 44 12 55 18 42 94 67 j=3
6 12 44 55 18 42 94 67
27
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo burbuja
i=4 6 12 44 55 18 42 94 67 j=8
6 12 44 55 18 42 67 94 j=7
6 12 44 55 18 42 67 94 j 6
j=6
6 12 44 55 18 42 67 94 jj=5
6 12 44 18 55 42 67 94 j=4
6 12 18 44 55 42 67 94
28
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo burbuja
ii=44 6 12 18 44 55 42 67 94
i=5 6 12 18 42 44 55 67 94
No se han
i=6 6 12 18 42 44 55 67 94 producido
cambios
bi
i=7 6 12 18 42 44 55 67 94
i=8 6 12 18 42 44 55 67 94
29
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
30
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
2 5 7 18 105 94 42 12
i=2 2 5 7 18 105 94 12 42 j=8
2 5 7 18 105 12 94 42 j=7
2 5 7 18 12 105 94 42 j=6
2 5 7 12 18 105 94 42 j=5
31
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo sacudida
6 44k 55 12 42 94 18 67
6 44 12 55k 42 94 18 67
6 44 12 42 55k 94 18 67
6 44 12 42 55 94k 18 67
6 44 12 42 55 18 94k 67
6 44 12 42 55 18 67 94k
34
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo sacudida
6 44 12 42 55 18 67 94
6 44 12 42 18 55k 67 94
6 44 12 18 42k 55 67 94
6 12 44k 18 42 55 67 94
6 12 18 44k 42 55 67 94
6 12 18 42 44k 55 67 94
6 12 18 42 44 55 67 94
35
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
Ordenacin p por montculo ((heapsort).
p ) No lo
vamos a ver.
Ordenacin por mezcla (mergesort).
(mergesort) No lo
vamos a ver.
Ordenacin rpida (quicksort)
36
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
Ordenacin rpida (quicksort)
Se toma arbitrariamente un elemento (x) del vector:
1. Se recorre el vector de izquierda a derecha hasta encontrar un
elemento vi, que sea mayor que x.x
2. Se recorre el vector de derecha a izquierda hasta encontrar un
elemento vj que sea menor que x.
3. S iintercambian
Se t bi vi y vj, y se contina
ti este
t proceso hasta
h t que los
l
recorridos se encuentran.
Como resultado:
Tenemos el vector partido en dos, una parte izquierda con elementos
menores que x y la derecha con los mayores que x.
Tras aplicar el algoritmo de particin,
particin el elemento x ocupar su
posicin correcta.
37
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
Ordenacin rpida (quicksort)
Caso ms favorable: Se selecciona la mediana como elemento
de particin en todos los casos:
Cada proceso de particin divide al vector en dos partes iguales,
iguales y el
nmero de pasadas para ordenarlo es logn.
El total de comparaciones resultantes el del orden nlogn.
Evidentemente la posibilidad de que esto ocurra es prcticamente
nula. No obstante el rendimiento medio del algoritmo sigue siendo
proporcional a nlogn.
Caso ms desfavorable: Se selecciona como elemento de
particin el mayor del subvector analizado.
El principal
i i l inconveniente
i i t es su bajo
b j rendimiento
di i t para valores
l
pequeos de n.
38
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
algoritmo quicksort (izquierda, derecha, n; v;)
inicio
i izquierda
j derecha
mitad v[(izquierda + derecha) div 2]
repetir
mientras v[i] < mitad
ii+1
fi
fin-mientras
i t
mientras v[j] > mitad
jj-1
fin-mientras
si i <= j entonces Se intercambia el pivote y por
auxiliar v[i]
v[i] v[j] tanto i++, j++por lo que el pivote
v[j] auxiliar
ii+1 no se incluye en las llamadas
jj-1 recursivas
fin-si
hasta que i > j
si izquierda < j entonces
quicksort (izquierda, j, n, v) Si hay un solo elemento, para la recursividad
fin-si
si i < derecha entonces
quicksort (i, derecha, n, v)
fin-si
fin
39
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
44 55 12 42 94 18 6 67
Ejemplo quicksort
Quicksort(1, 8) 44 55 12 42m 94 18 6 67
6 55 12 42m 94 18 44 67
6 18 12 42m 94 55 44 67
Quicksort(1, 3) Quicksort(5, 8)
el pivote cambia, 6 18m 12 94 55m 44 67
se incluye en la 6 18m 12
llamada 44 55m 94 67
recursiva
6 12 18m
Quicksort(1, 2) Quicksort(7, 8) 94m 67
6m 12
67 94m
6 12 41
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
2 4 6 8 1 5 3
Ejemplo quicksort
Quicksort(1, 7) 2 4 6 8m 1 5 3
2 4 6 3 1 5 8m
Quicksort(1, 6) 2 4 6m 3 1 5
2 4 5 3 1 6m
2 4 5m 3 1 Quicksort(1, 5)
2 4 1 3 5m
2 4m 1 3 Quicksort(1, 4)
2 3 1 4m
42
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodo
Mt d de
d contabilizacin
t bili i de d
frecuencias
Slo se puede aplicar bajo condiciones muy especiales.
NO es un mtodo in-situ (requiere un vector auxiliar para la
ordenacin).
Su importancia radica en que su tiempo de ejecucin es O(n).
Si el rango de los valores del vector de partida es muy amplio,
d fi i un vector que abarque
definir b dicho
di h rango es inviable.
i i bl
Este algoritmo se puede plantear en ms ocasiones de lo que a
priori
i i parece.
43
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
Mtodo de contabilizacin de frecuencias
Se basa en contabilizar frecuencias de los elementos del vector:
En un vector ordenado, si un elemento est en la posicin k-sima, se debe a
que en el estado inicial haba k-1 elementos menores que el (si suponemos
que todos los elementos son distintos).
Contar para cada elemento del vector v, el nmero de elementos inferiores a
el, despus colocar cada valor en un vector vordenado en funcin de la
contabilizacin
t bili i realizada.
li d
Para realizar la contabilizacin necesaria, hay que comparar cada elemento
del vector con los dems (n2).
Cuando el nmero de posibles elementos del vector es finito, y est acotado
entre unos lmites razonables, se puede formar un vector que contabilice las
frecuencias de cada elemento, y obtener un algoritmo de contabilizacin
eficaz
eficaz.
44
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Mtodos sofisticados
algoritmo frecuencias(n, v; ; vordenado)
inicio
para i de mnimo a mximo //Inicializa vector de frecuencias
frec [i] 0
fin-para
p
para i de 1 a n //Construye vector de frecuencias
frec[v[i]] frec[v[i]] + 1
fin-para
para i de mnimo+1 a mximo //Construye vector de frecuencias acumuladas
frec[i] frec[i-1]+frec[i]
fin para
fin-para
para i de n a 1 paso 1 //Ordena
vordenado[frec[v[i]] v[i]
f [ [i]] frec[v[i]]
frec[v[i]] f [ [i]] - 1
fin-para
fin 45
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
6 4 5 6 4 8 6
Ejemplo frecuencias
Paso 1. Construir vector de frecuencias 8 7 6 5 4
1 0 3 1 2
Paso 2. Construir vector de frecuencias acumuladas
8 7 6 5 4
7 6 6 3 2
Paso 3. Colocacin de v en ordenado
1 n
v 6 4 5 6 4 8 6 8 7 6 5 4
7 6 5 3 2 frec
6 max min
46
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo frecuencias
6 4 5 6 4 8 6 8 7 6 5 4
6 6 5 3 2
6 8
6 4 5 6 4 8 6 8 7 6 5 4
6 6 5 3 1
4 6 8
6 4 5 6 4 8 6 8 7 6 5 4
6 6 4 3 1
4 6 6 8
47
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ejemplo frecuencias
6 4 5 6 4 8 6 8 7 6 5 4
6 6 4 2 1
4 5 6 6 8
6 4 5 6 4 8 6 8 7 6 5 4
6 6 4 2 0
4 4 5 6 6 8
6 4 5 6 4 8 6 8 7 6 5 4
6 6 3 2 0
4 4 5 6 6 6 8
48
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
49
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Ordenes de eficiencia
tiempo
50
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Conclusiones
El mtodo de la burbuja es el peor de todos, y su versin mejorada, de la
sacudida,
did es iincluso
l peor que llos dde iinsercin
i y seleccin
l i di directa.
t
En general, el mtodo de seleccin directa es preferible al de insercin
directa e insercin binaria, aunque en los casos en que los elementos estn
inicialmente ordenados o casi ordenados, estos ltimos pueden ser algo
ms rpidos.
El mtodo Shell es ms rpido que todos los anteriores
anteriores, pero menos eficaz
que los de orden nlogn.
Los mtodos sofisticados (orden nlogn) requieren menos operaciones que
l dems,
los d pero all ser normalmente
l ms complejos
l j en detalle,
d ll no se deben
d b
utilizar para valores pequeos de n.
De los mtodos sofisticados,, el q quicksort es el ms eficaz.
51
Eva Lucrecia Gibaja Galindo. Departamento de Informtica y Anlisis Numrico
Conclusiones
mejor
mejor O(n2)
O( O( l
O(nlogn)
) O( )
O(n)
Insercin Shell Quicksort2 Contabilizacin
Seleccin directa1 de frecuencias
Insercin binaria
Insercin directa
Burbuja (sacudida)
Burbuja
52