Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Page 1 of 100
Go Back
Full Screen
Close
Quit
jlopez@eisc.univalle.edu.co
4 de noviembre de 2003
Generalidades
Los algoritmos vistos hasta ahora, son algoritmos de ordenamiento
por comparacin (MergeSort, QuickSort, InsertionSort, HeapSort).
o
El costo en el peor caso de MergeSort, HeapSort es O(n lg n).
Home Page
Title Page
Contents
Page 2 of 100
Go Back
Full Screen
Close
Radix Sort.
Quit
Bucket Sort.
Page 3 of 100
a 2 : a3
a2 : a 3
Go Back
Full Screen
<1,2,3>
a 1 : a3
<2,1,3>
a 1 : a3
Close
Quit
<1,3,2>
<3,1,2>
<2,3,1>
<3,2,1>
Arbol de Decisin
o
Home Page
Title Page
Contents
Page 4 of 100
Go Back
Full Screen
Close
Quit
Arbol de Decisin
o
Cota inferior para el peor caso
La longitud del camino ms largo de la ra a una hoja, es el nmero
a
z
u
de comparaciones que se hacen en el peor caso: este nmero es igual
u
a la altura del rbol de decisin.
a
o
Home Page
Title Page
Contents
Page 5 of 100
Go Back
Full Screen
Close
Quit
Page 6 of 100
Go Back
Full Screen
Close
Quit
El algoritmo Counting Sort recibe un arreglo A[1..n] donde se encuentran los elementos a ordenar, un arreglos de salida donde quedaran los datos de ordenados B[1..n] y un arreglo C[0..k] que trabaja
como almacenamiento temporal.
Counting Sort (A, B, k)
1 for i 0 to k
2
do C[i] 0
3 for j 1 to length [A]
4
do C[A[j]] C[A[j]] + 1
C[i] = # veces que aparece i en A
5 for i 1 to k
6
do C[i] C[i] + C[i 1]
C[i] = # de elementos de A i
7 for j length[A] downto 1
8
do B[C[A[j]]] A[j]
9
C[A[j]] C[A[j]] 1
B
Close
Full Screen
Go Back
b)
Page 7 of 100
C
Contents
Title Page
a)
Home Page
A 2
3 0
B 0 0 2
Full Screen
Go Back
Page 8 of 100
e)
!
0
2
Contents
Title Page
d)
Home Page
0
2
34
56
79
= O(k + n)
Si k = O(n), entonces tiempo de ejecucin es O(n)
o
Contents
Page 9 of 100
Go Back
Full Screen
Close
Quit
Radix Sort
El algoritmo Radix Sort ordena n nmeros enteros de d d
u
gitos.
Para ordenar los nmeros solo lo hacemos con una columna al tiempo, el
u
problema es ordenar los n nmeros de d d
u
gitos.
d1 d
1
1
Home Page
d1 d
Title Page
Contents
g 4: Representacin General
o
Page 10 of 100
Go Back
Full Screen
Close
Quit
720
355
436
457
657
329
839
720
329
436
839
355
457
657
329
355
436
457
657
720
839
Radix Sort
En el siguiente procedimiento se asume que los n elementos de arreglo A tiene d d
gitos, donde el d
gito 1 es de inferior orden orden y el
d
gito d de alto orden.
Home Page
Title Page
Contents
Page 11 of 100
Lemma 1:
Dado n nmeros en el cul cada d
u
a
gito puede tomar k posibles valores,
Radix Sort ordena correctamente los n nmeros en (d(n + k)).
u
Go Back
Full Screen
Close
Quit
Si d es constante y k = O(n):
Lemma 2:
Dado n nmeros de b bits y algn entero positivo r b, Radix-Sort
u
u
ordena correctamente los nmeros existentes en ((b/r)(n + 2r )).
u
Bucket Sort
El algoritmo se ejecuta en tiempo lineal, donde la entrada es tomada de una distribucin uniforme.
o
Supone que la entrada es generada por un proceso aleatorio que distribuye los elementos uniformente en el intervalo [0, 1).
Home Page
Title Page
Contents
Idea:
Dividir el intervalo [0, 1) en n subintervalos de igual tamao
n
(Buckets) y distribuir los n nmeros de entrada en los Buckets.
u
Luego se ordena cada Bucket por insercin y por ultimo, se cono
Page 12 of 100
Go Back
Full Screen
Close
Quit
Bucket Sort
Ejemplo de un arreglo de 10 nmeros :
u
A
.78
.17
.39
.26
.12
.21
Page 13 of 100
Go Back
Full Screen
Close
Quit
.72
.94
.21
.12
.23
10 .68
Contents
.26
.39
Title Page
.23
Home Page
.17
a)
.68
.72
.78
/
.94
b)
g 6: Operacin de Bucket-Sort
o
BucketSort (A)
1 n length[A]
2 for i 1 to n
3
do inserte A[i] en la lista B[ nA[i] ]
4 for i 0 to n 1
5
do ordene la lista B[i] por el algoritmo de ordenamiento por insercin
o
6 Concatene las listas B[0], . . . , B[n 1] en orden
Bucket Sort
El costo de ejecucin de todas las lineas del algoritmo excepto la lio
nea 5 toma O(n) en el peor caso.
Anlisis: El costo total del Bucket Sort depende de la l
a
nea 5.
n1
O(n2 )
i
T (n) = (n) +
Home Page
i=0
Title Page
Contents
n1
2
i=0 O(ni )]
= (n) +
Page 14 of 100
Go Back
Full Screen
Close
n1
2
i=0 E[O(ni )]
= (n) +
n1
2
i=0 O(E[ni ])
(1)
Armamos que
E[n2 ] = 2 1/n (2)
i
Utilizando el valor esperado de la ecuacin (1), el costo de ejecucin del
o
o
Bucket Sort es :
Quit