Tarea Analítica 3: Quicksort, Estadísticas de Orden, Stacks, Colas, Listas, Árboles, y Hashing,
1.- Durante la ejecución del procedimiento Randomized_Quicksort, ¿Cuántas llamadas son hechas a la función generadora de números aleatorios (random) en el peor caso? ¿Cuántas llamadas son hechas en el mejor caso?
2.- Determine el contenido final para el arreglo C al aplicar Counting_Sort sobre el arreglo A=<7,1,3,1,2,4,5,7,2,4,3>. k=7.
3.- Suponga que usamos Randomized_Select para seleccionar el elemento mínimo del arreglo A= <3,2,9,0,7,5,4,8,6,1>. Describa la secuencia de operaciones que resultan en le peor desempeño de Randomized_Select.
4.-Sean X[1..n] e Y[1..n] dos arreglos, cada uno conteniene n números ya ordenados en forma creciente. Proponga un algoritmo de tiempo O(lgn) para encontrar la mediana de los 2n elementos en los arreglos X e Y.
5.-Implemente un stack usando una lista simplemente enlazada. La operación Push y Pop deberían tomar tiempo O(1).
6.- Considere una tabla hash de tamaño m=1000 y una función
de hash h(k) = trunc(m*(ParteFraccionaria(k*A))) para A=(sqrt(5)-1)/2.
Calcule las localizaciones a las cuales las claves 61, 62, 63, 64,
y 65 son mapeadas. (Obs: trunc toma la parte entera del argumento
eliminando la fraccionaria,;ParteFrancionaria: toma la parte fraccionaria
y deja como cero la parte entera.
7.- Obtenga algoritmos recursivos que recorran el árbol en pre-orden
y post-orden en tiempo O(n) sobre un árbol de n nodos.