Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombre y Apellidos
Grupos reducido
Instrucciones:
- Escribe tu nombre en el cuadernillo y en las hojas de cuadro.
- La duración del examen es de 120 minutos.
- Los móviles deben estar apagados y nunca pueden estar encima de la mesa.
- Utiliza las hojas de cuadros para preparar tu solución. Cada ejercicio se
entregará en una hoja separada.
- Cuida al máximo la presentación de tu solución. Es imprescindible que tu
código sea claro, bien ordenado y limpio.
- No puedes pedir tipex, bolígrafo, etc a tus compañeros. Si necesitas algo,
pídeselo al profesor.
- No puedes salir del examen antes de que pasen 30 minutos.
- No está permitido ir al baño.
- Cuando termines, entrega el enunciado al profesor junto con las hojas de
cuadros de tu solución (una hoja por ejercicio).
Ejemplo 1
Sea G1 el MyGraph:
class MyGraph:
#completar
Problema 2 (2 puntos). Tiempo estimado 45 minutos:
Se pide implementar una función que reciba una lista de Python de enteros e implemente el
algoritmo Quicksort para ordenar dicha lista de forma descendente (es decir, de mayor a
menor). Por ejemplo, dada la lista l = [3, 5, 0, -1, 8], tras aplicar el algoritmo Quicksort, la lista
deberá ser l = [8, 5, 3, 0, -1]. La función transforma la lista de entrada en una lista ordenada,
es decir, la función no devuelve nada. Además de estar basada en el algoritmo Quicksort, tu
solución debe ser lo más eficiente en términos de complejidad espacial (es decir, no se
recomienda el uso de listas auxiliares). También debes tener en cuenta las siguientes
condiciones:
● Si el tamaño de la partición de entrada es impar, el pivote será el elemento que está
en mitad de la partición. Por ejemplo, supongamos que recibimos la partición [3, 4, 5,
1, 2], que tiene un número impar de elementos, en este caso el pivote será p=5.
● Sin embargo, si la partición de entrada tiene un tamaño par, también seleccionaremos
un pivote central (es decir, en mitad de la partición de entrada) pero teniendo en cuenta
que la nueva partición izquierda sea más pequeña que la partición derecha. Veamos
algunos ejemplos:
o Si la partición es [3, 4, 5, 1], el pivote debe ser 4.
o Si la partición es [3, 4, 5, 1, 2, 8], el pivote debe ser 5.
o Si la partición es [0, -1, 2, -2, 3, 0, 5, 8], el pivote debe ser -2.
● El algoritmo debe funcionar para listas con duplicados, por ejemplo, si l = [3,1,5,3,5],
después de llamar al algoritmo, l será [5, 5, 3, 3, 1].
Problema 3. 1 punto. Tiempo estimado 30 minutos:
Implementa una función, intersection, que reciba dos árboles AVL y devuelva un nuevo árbol
AVL que contenga los elementos que comparten ambos árboles. Recuerda que tu solución
debe tener la menor complejidad espacial y temporal posible.
# completar