Respuestas modelo
Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.
4.07 · Divide y Vencerás: Quicksort y Mergesort
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Qué algoritmo de ordenamiento usa la estrategia "divide y vencerás"?
- A. Burbuja
- B. Mergesort y Quicksort ✓ CORRECTA
- C. Inserción
- D. Selección
Mergesort y Quicksort dividen el arreglo, ordenan cada mitad recursivamente, y combinan. O(n log n) en promedio.
¿Cuál es la complejidad en el PEOR caso de Quicksort?
- A. O(n)
- B. O(log n)
- C. O(n log n)
- D. O(n²) ✓ CORRECTA
Quicksort es O(n log n) en promedio pero O(n²) en el peor caso (cuando el pivote es siempre el menor o mayor). Se mitiga con pivote aleatorio.
¿Cómo funciona Mergesort?
- A. Compara adyacentes
- B. Divide el arreglo, ordena cada mitad, y fusiona (merge) los resultados ✓ CORRECTA
- C. Selecciona el menor
- D. Inserta en posición
Mergesort: divide recursivamente hasta arreglos de 1 elemento, luego fusiona ordenadamente. Garantiza O(n log n).
📝 Test · Sección A · Opción múltiple (10)
¿Qué es "divide y vencerás"?
- A. Bucle simple
- B. Estrategia: dividir el problema en subproblemas, resolver, combinar ✓ CORRECTA
- C. Hash
- D. Recursión infinita
Divide y vencerás: divide, resuelve recursivamente, combina. MergeSort, QuickSort.
¿Cuál es la complejidad típica de divide y vencerás?
- A. O(n)
- B. O(n log n) si la división y combinación son O(n) o menor ✓ CORRECTA
- C. O(n²)
- D. O(2^n)
T(n) = 2T(n/2) + O(n) → O(n log n) por Master Theorem.
¿Cómo funciona Mergesort?
- A. Compara adyacentes
- B. Divide, ordena cada mitad, fusiona ordenadamente ✓ CORRECTA
- C. Selecciona
- D. Hash
Mergesort: divide en 2, ordena cada mitad recursivamente, fusiona (merge) en O(n).
¿Mergesort es estable?
- A. No
- B. Sí ✓ CORRECTA
- C. Solo con comparador
- D. Solo en C++
Mergesort: estable. Mantiene el orden relativo de elementos iguales.
¿Cómo funciona Quicksort?
- A. Compara adyacentes
- B. Selecciona pivote, particiona, ordena recursivamente ✓ CORRECTA
- C. Hash
- D. Inserta
Quicksort: pivote, partición (< pivote | pivote | > pivote), recursión.
Peor caso de Quicksort:
- A. O(n)
- B. O(n²) cuando el pivote es siempre el peor ✓ CORRECTA
- C. O(log n)
- D. O(n log n) siempre
Peor caso: pivote siempre el menor o mayor (array ordenado + pivote fijo).
¿Cómo mejorar el peor caso de Quicksort?
- A. Más memoria
- B. Pivote aleatorio o mediana de tres ✓ CORRECTA
- C. Más comparaciones
- D. Compilar
Pivote aleatorio o mediana de 3: en la práctica, evita el peor caso.
Quicksort vs Mergesort en uso de memoria:
- A. Igual
- B. Quicksort: O(log n) de stack, Mergesort: O(n) de array extra ✓ CORRECTA
- C. Mergesort usa menos
- D. Ambos O(1)
Quicksort: in-place, O(log n) de stack. Mergesort: O(n) de array auxiliar.
Mergesort es preferible cuando:
- A. Memoria es crítica
- B. Se necesita estabilidad o datos muy grandes ✓ CORRECTA
- C. Velocidad pura
- D. Solo con arrays pequeños
Mergesort: estable, predecible O(n log n). Útil cuando se requiere estabilidad.
Quicksort es típicamente el más rápido en:
- A. Todos los casos
- B. Promedio para datos aleatorios ✓ CORRECTA
- C. Datos ordenados
- D. Solo con strings
Quicksort: en promedio O(n log n) con muy bajo constante. Rápido en práctica para datos aleatorios.
✍️ Test · Sección B · Preguntas abiertas (3)
Diseña un Mergesort. ¿Es estable? ¿Por qué?
Mergesort(array, izq, der) { if (izq < der) { mid = (izq+der)/2; Mergesort(izq, mid); Mergesort(mid+1, der); merge(izq, mid, der); } }. La función merge mantiene el orden: si izq[i] <= der[j], tomar izq[i]. Es estable porque la condición es <=, no <.
¿Por qué Quicksort suele ser más rápido en la práctica que Mergesort a pesar de tener la misma complejidad?
Quicksort: in-place, mejor locality of reference (accede a memoria cercana), bajo constante. Mergesort: O(n) de memoria extra para el array auxiliar, peor cache behavior. Para datos en memoria, Quicksort gana en práctica.
¿Cómo elegirías el pivote en Quicksort? Compara 3 estrategias.
Primer elemento: simple pero falla con datos ordenados. Aleatorio: robusto contra patrones, fácil. Mediana de tres: robusto y rápido (usa el medio de primero, medio, último). Mediana de tres es la mejor en la práctica.
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.