Recentemente ho implementato quickselect, un algoritmo per calcolare il k-esimo elemento più piccolo di un array, che, grosso modo, funziona dividendo ripetutamente l'array attorno a un pivot e riducendo opportunamente l'array.
L'implementazione riorganizza l'array di input, che rievoca per riferimento, per evitare sprechi di memoria extra.
Quale delle due opzioni sottostanti preferisci (come qualcuno che usa l'algoritmo)?
- L'algoritmo crea una copia dell'array di input e combina con la copia.
- L'algoritmo modifica l'array di input (l'utente deve fare attenzione a passare una copia nel caso in cui l'ordine sia importante per lei).