Perché Quicksort si chiama "Quicksort"?


9

Il punto di questa domanda non è di discuterne i meriti rispetto a qualsiasi altro algoritmo di ordinamento - certamente ci sono molte altre domande che lo fanno. Questa domanda riguarda il nome. Perché Quicksort si chiama "Quicksort"? Certo, è "veloce", il più delle volte, ma non sempre. La possibilità di degenerare in O (N ^ 2) è ben nota. Esistono varie modifiche a Quicksort che mitigano questo problema, ma quelle che portano il caso peggiore a una O garantita (n log n) non vengono generalmente chiamate Quicksort. (ad es. Introsort).

Mi chiedo solo perché di tutti i noti algoritmi di ordinamento, questo è l'unico che merita il nome "veloce", che descrive non come funziona l'algoritmo, ma quanto velocemente (di solito) è. Mergesort si chiama così perché unisce i dati. Heapsort si chiama così perché utilizza un heap. Introsort prende il nome da "Introspective", poiché controlla le proprie prestazioni per decidere quando passare da Quicksort a Heapsort. Allo stesso modo per tutti quelli più lenti - Bubblesort, Insertion sort, Selection sort, ecc. Sono tutti denominati per come funzionano. L'unica altra eccezione che mi viene in mente è "Bogosort", che in realtà è solo uno scherzo che nessuno usa mai in pratica. Perché Quicksort non è chiamato qualcosa di più descrittivo, come "Ordinamento partizioni" o "Ordinamento pivot", che descrivono ciò che effettivamente fa? Non è nemmeno il caso di "arrivare prima qui". Mergesort è stato sviluppato 15 anni prima di Quicksort. (1945 e 1960 rispettivamente secondo Wikipedia)

Immagino che questa sia davvero una questione più storica che di programmazione. Sono solo curioso di come abbia ottenuto il nome: è stato solo un buon marketing?


1
Timsort, che è migliorato quicksort, non prende il nome da come funziona, ma piuttosto dal suo inventore. Nomi come flashsort o introsort non dicono molto sull'algoritmo.
vartec,

What's in a name? that which we call a rose By any other name would smell as sweet;Quello o essere altrettanto veloce. Inoltre, la possibilità di degenerare in O (N ^ 2) ha poche possibilità di accadere, e N LogN è abbastanza buono per un algoritmo, nonostante oggi abbiamo algoritmi più veloci. Inoltre, quando arrivò qualcosa di più veloce, era troppo tardi, tutti lo chiamavano già Quicksort!
Appunto

1
@vartec Timsort è in realtà derivato da Mergesort, non da Quicksort, ma sono d'accordo, questa è un'altra eccezione. Introsort non ti fornisce l'intero algoritmo, ma almeno descrive qualcosa di come funziona: è "introspettivo". Flashsort Non ho molta familiarità, ma immagino che si chiami così perché "lampeggia" ogni elemento nella sua ipotesi migliore di dove dovrebbe essere?
Darrel Hoffman,

1
@Ampt In realtà, nella forma più semplice di Quicksort, il caso O (N ^ 2) è abbastanza probabile nel caso comune in cui i dati sono già ordinati o quasi. Certo, sviluppi successivi come Median-of-3 o pivot casuale lo rendono molto più raro, ma il nome è ancora usato per implementazioni che mancano di tali miglioramenti.
Darrel Hoffman,

Apparentemente, è meglio di Quickest?
JeffO,

Risposte:


13

Nel 1962 la ricerca sugli algoritmi di smistamento non era così avanzata come oggi e lo scienziato Tony Hoare ha trovato un nuovo algoritmo che era più veloce dell'altro, quindi ha pubblicato un documento chiamato Quicksort e come è stato citato, il titolo è rimasto.

Citando l'abstract:

Viene fornita una descrizione di un nuovo metodo di ordinamento nell'archivio ad accesso casuale di un computer. Il metodo si confronta in modo molto favorevole con altri metodi noti in termini di velocità, economia di archiviazione e facilità di programmazione. Alcuni perfezionamenti del metodo, che possono essere utili nell'ottimizzazione dei circuiti interni, sono descritti nella seconda parte del documento.


La nota a piè di pagina a pagina 11 nel PDF collegato suggerisce che c'era un documento precedente su Quicksort pubblicato nel 1961. Tale documento è anche menzionato nella sezione Riferimenti alla fine del documento.
FrustratedWithFormsDesigner,

1961, Algorythm 64: Quicksort
Pieter B,

Immagino che questo sia il più vicino possibile alla risposta corretta. Spiega chi lo ha chiamato, ma non perché lo stia ancora usando, quando esistono alternative più recenti e potenzialmente più veloci. Buona lettura - è interessante vedere quanta roba degli anni '60 si applica ancora alla tecnologia moderna.
Darrel Hoffman,

3
@DarrelHoffman Perché il nome dovrebbe cambiare? A che punto gli svantaggi di chiamare l'algoritmo Quicksort supererebbero i costi del tentativo di convincere tutti a chiamarlo PartitionSort o altro?
prosfilaes,

0

Credo che originariamente si chiamasse Hoare Sort dopo l'inventore, ma il nome è stato cambiato abbastanza presto a causa del suono di Hoare che sembra un po 'vicino alla puttana in inglese. Per quanto riguarda il motivo per cui hanno scelto "veloce" invece di qualcos'altro, non sono sicuro.


-1

Credo sia perché, al momento dell'invenzione, era molto più veloce di tutti (o, piuttosto, la maggior parte, poiché la velocità dipende anche fortemente dal tipo di dati e in alcuni casi altri algoritmi diventano molto più veloci di quicksort) algoritmi là fuori.

Quindi sì, è storico (non conosco esattamente quella storia, comunque ...)

Ma sono d'accordo che il suo nome dovrebbe invece contenere un suggerimento dell'algoritmo ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.