¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?

Aquí está el pseudocódigo [1]

Quicksort (A como matriz, bajo como int, alto como int) {
si (bajo <alto) {
pivot_location = Partición (A, baja, alta)
Quicksort (A, low, pivot_location)
Quicksort (A, pivot_location + 1, high)
}
}
Partición (A como matriz, baja como int, alta como int) {
pivote = A [bajo]
izquierda = baja

para i = bajo + 1 a alto {
si (A [i] <pivote) entonces {
swap (A [i], A [pared izquierda])
leftwall = leftwall + 1
}
}
swap (pivote, A [pared izquierda])

volver (izquierda)

Si se mira con cuidado, el número de llamadas recursivas depende del pivote alrededor del cual se reorganiza la matriz. Para lograr la mejor complejidad, el pivote debe ser la mediana de la matriz que resulta en [math] O (nlogn) [/ math].
El peor de los casos ocurre cuando el pivote es más pequeño o más grande en la matriz. Esto divide la matriz en tamaño de [math] 1 [/ math] y [math] n-1 [/ math] respectivamente. Cada llamada [math] i ^ {\ text {th}} [/ math] escanea linealmente una matriz de tamaño [math] ni [/ math], terminando así con [math] O (n ^ 2) [/ math] .

Notas al pie

[1] Quicksort – Algoritmo

Cuando la matriz ya está ordenada !!

Cuando la matriz ya está ordenada, la complejidad de tiempo de la ordenación rápida es [matemática] O (n ^ 2) [/ matemática]. Para comprender cómo es [matemática] O (n ^ 2) [/ matemática], debe comprender qué tan rápido está funcionando la ordenación. Puedes encontrar una buena explicación en Wikipedia. Simplemente cree una matriz ya ordenada y aplique la ordenación rápida en eso. Encontrará que el número total de comparación será [matemática] n ^ 2 [/ matemática].

Cuando particiona la matriz en 1 elemento y el resto

Básicamente, cuando particionas mal