Quicksort: Escolhendo o pivô

Ao implementar o Quicksort, uma das coisas que você precisa fazer é escolher um pivô. Mas quando olho para o pseudocódigo como o abaixo, não está claro como devo escolher o pivô. Primeiro elemento da lista? Algo mais?

 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))

Alguém pode me ajudar a entender o conceito de escolher um pivô e se os diferentes cenários exigem estratégias diferentes?

questionAnswers(13)

yourAnswerToTheQuestion