Quicksort: Elegir el pivote

Al implementar Quicksort, una de las cosas que debe hacer es elegir un pivote. Pero cuando veo un pseudocódigo como el de abajo, no está claro cómo debo elegir el pivote. ¿Primer elemento de la lista? ¿Algo más?

 function quicksort(array)
     var list less, greater
     if length(array) ≤ 1  
         return array  
     select and remove a pivot value pivot from array
     for each x in array
         if x ≤ pivot then append x to less
         else append x to greater
     return concatenate(quicksort(less), pivot, quicksort(greater))

¿Puede alguien ayudarme a comprender el concepto de elegir un pivote y si diferentes escenarios requieren o no diferentes estrategias?

Respuestas a la pregunta(13)

Su respuesta a la pregunta