You are on page 1of 3

Universidad de Talca

Departamento de Ingeniera de Sistemas


n
Escuela de Ingeniera Civil en Computacio

Algoritmos y Estructuras de Datos Semestre 12006

Set de ejercicios No 4
Temas: Algoritmos de Ordenacion
Autor: Hector Rojas B.
Email: hrojas@alumnos.utalca.cl
1. Las siguientes preguntas tienen que ver con algoritmos de ordenaci
on. En la respuesta de cada una puede
usar referencias a los algoritmos estudiados o partes de ellos para responder. En cada caso se entrega
una ayuda acerca de que algoritmos, o partes de ellos, pueden servirle (no es obligatorio que use estos
algoritmos). En cada caso justifique claramente su respuesta.
a) Se quiere ordenar un arreglo de largo n que s
olo tiene 0s y 1s. Describa un procedimiento para
ordenar en tiempo lineal O(n) el arreglo sin necesitar espacio adicional al mismo arreglo, es decir,
s
olo intercambiando valores del arreglo. [Quicksort Countingsort]
b) Describa un procedimiento que dado un arreglo A con n n
umeros en el rango 0 a k, construya en
tiempo O(n + k) un arreglo B que sirva para responder en tiempo (1) cualquier pregunta acerca
de cu
antos de los n enteros iniciales se encuentran en el rango [a . . b] (0 a b k), o sea, cuantos
de los n elementos son mayores o iguales a a y menores o iguales a b. [Countingsort]
2. Sea T una tabla de hash de tama
no 10 y h la siguiente funcion de hash
h(k) = 4 + 3k

mod 10.

Se quieren insertar en T elementos con claves 1, 11, 5, 15, 55, 6, 26, 90, 50, 20 en ese mismo orden usando h.
a) Determine el resultado de insertar las claves en T si las colisiones se resuelven por encadenamiento
(suponga que un nuevo elemento se agrega al final de una lista).
b) Determine el resultado de insertar las claves en T si las colisiones se resuelven por examinaci
on lineal.
c) Considera usted que la tabla T equipada con la funcion de hash h es buena como tabla de hash?
Justifique claramente su respuesta con respecto a las condiciones que una funcion de hash debiese
cumplir.
3. Al igual como se entreg
o en los apuntes un arbol de decision para el algoritmo Insert-Sort, grafique un
arbol de decisi
on para el algoritmo Select-Sort.

Universidad de Talca
Departamento de Ingeniera de Sistemas
n
Escuela de Ingeniera Civil en Computacio

Algoritmos y Estructuras de Datos Semestre 12006

Soluci
on - Set de ejercicios No 4
Temas: Algoritmos de Ordenacion
Autor: Hector Rojas B.
Email: hrojas@alumnos.utalca.cl
1.

a) En este caso, lo mas facil es hacer un procedimiento similar a Partition una u


nica vez sobre el arreglo
cuidando de que el pivote sea un 0. El Partition debe estar peque
namente modificado porque
necesitamos que se cambie siempre un 0 por un 1, nunca un 0 por un 0. Entonces desde la izquierda
buscamos el primer 1 y desde la derecha buscamos el primer 0 y los intercambiamos y seguimos con
el procedimiento hasta que los ndices de b
usqueda se cruzen, en este momento estaremos seguros
de que a la izquierda quedaron todos los 0s y a la derecha todos los 1s. Este procedimiento toma
O(n) en el peor caso ya que se recorre linealmente el arreglo. (Es casi exactamente lo mismo que
hacer un Partition normal pero con pivote 0,5).
b) Lo mas simple aqu es usar los calculos de los P [i] que hace Counting-Sort. Este calcula a partir
de un arreglo A con n elementos en el rango 0 a k los valores P [i] de todos los elementos que son
menores o iguales a i. Si usamos este arreglo como el B del enunciado, para saber cu
antos de los n
elementos iniciales caen en el rango [a . . b] simplemente retornamos B[b] B[a 1] cuid
andonos de
que a 6= 0, si a = 0 simplemente retornamos B[b]. (el B[a 1] es porque se quieren todos lo elementos
que son mayores o iguales a a).

2.

a) La tabla que resulta es


0
1
2
6 26
3
4
90 50 20
5
6
7
1 11
8
9
5 15 55
b) La tabla que resulta es
0 15
1 55
2 6
3 26
4 90
5 50
6 20
7 1
8 11
9 5

c) La raz
on por la cu
al la tabla junto con la funcion funcionan muy mal como tabla de hash es
por que la posicion de cada n
umero depende
u
nicamente del u
ltimo dgito del n
umero,
es imprescindible que una funcion de hash tome
en cuenta el valor completo para decidir su ubicai
on en la tabla.
NOTA: Es muy generico decir algo como es mala
porque no minimiza las colisiones. Esta bien decir que no es bueno tener modulo 10 en una funcion de hash pero se deba decir por que no era
bueno.

s1 ? s0

<

>
s2 ? s0

s2 ? s1
<

<

>
s2 ? s0

s0 ? s1

<
(2, 0, 1) (2, 1, 0) (1, 2, 0)

<

>
(1, 0, 2)

s0 ? s1
>

(2, 0, 1)(2, 1, 0)

>
s2 ? s1
<

>
(0, 1, 2)

(0, 2, 1)

s0 s1 s2

s0 s1 s2

s2 s1 s0

s2 s0 s1

s2 s1 s0

s0 s1 s2

s1 s0 s2

s1 s2 s0

s2 s1 s0

s1 s0 s2 s2 s0 s1

s2 s1 s0

s0 s1 s2

s0 s2 s1

s0 s1 s2

Figura 1: Arbol
de decisi
on para selectsort cuando ordena un arreglo de tres elementos (arriba) y como se
actualiza la posicion de los elementos en el arreglo con cada decision (abajo).

3. Arbol
de decisi
on de Select-Sort
La figura anterior muestra el
arbol de decision para selectsort cuando este trabaja sobre un arreglo de 3
elementos (arriba) y como va cambiando la disposicion de los elementos en el arreglo (abajo).

You might also like