Difícil parcial-1

Particionamiento en Quick Sort con analisis de pivote

Fuente: Material del curso — Test: Merge Sort, Quick Sort y Heap Sort (quiz en linea)

quick-sortparticionamientopivotetrazapeor-caso

Enunciado

Considere el siguiente arreglo:

A=[15,3,9,8,5,2,7,1,6]A = [15, 3, 9, 8, 5, 2, 7, 1, 6]

(a) Aplique el algoritmo de particionamiento de Lomuto usando el ultimo elemento como pivote. Muestre el estado del arreglo despues de cada intercambio (swap), indicando claramente:

  • El valor del pivote.
  • La posicion del indice ii (frontera de los elementos menores).
  • La posicion del indice jj (elemento actual siendo evaluado).

(b) Despues de la particion, indique:

  • La posicion final del pivote.
  • El subarreglo izquierdo (elementos \leq pivote).
  • El subarreglo derecho (elementos >> pivote).

(c) Ahora considere el arreglo ya ordenado:

B=[1,2,3,4,5,6,7,8,9]B = [1, 2, 3, 4, 5, 6, 7, 8, 9]

Si se usa siempre el ultimo elemento como pivote, que ocurre en cada paso de particionamiento? Cuantas comparaciones se realizan en total para ordenar este arreglo? Demuestre que la complejidad es O(n2)O(n^2) en este caso.

(d) Proponga dos estrategias para evitar el peor caso de Quick Sort y explique como mejoran el rendimiento esperado.

(e) Quick Sort es un algoritmo estable? Justifique con un contraejemplo si su respuesta es negativa.