2012-12-30 19 views
8

Quicksort supera in pratica Heapsort. Il Mergesort è l'unico stabile del 3 (nelle normali implementazioni di vaniglia). Quindi è quicksort o mergesort che si abitua a seconda della situazione (sul posto in memoria o ordinamento esterno ecc.)L'heapsort è mai stato utilizzato nella pratica?

Quindi c'è sempre un caso in cui la struttura dei dati dell'heap viene effettivamente utilizzata per l'ordinamento ? Indipendentemente da quanto io "Google" o provo a creare applicazioni, quasi sempre si sceglie l'unione/l'ordinamento rapido su heapsort. Non ho mai incontrato un caso in cui l'ordinamento dell'heap sia effettivamente utilizzato nella mia vita professionale. Quale sarebbe in realtà un buon caso d'uso per heapsort in pratica (se non del tutto), per curiosità?

+3

Questa è una domanda molto interessante, per favore lascia un commento sul motivo per cui dovrebbe essere chiuso. –

+0

Si prega di fornire un motivo per votare per "chiudere" la domanda. Questa è una domanda legittima di programmazione, IMHO. – PhD

+0

Poiché non è una domanda con una risposta "corretta" dovrebbe essere, nella migliore delle ipotesi, wiki della comunità. I voti stretti finora sono stati tutti per "Allo stato attuale, questa domanda non si adatta bene al nostro formato di domande e risposte. Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze specifiche, ma questa domanda probabilmente solleciterà il dibattito, argomenti, sondaggi o discussioni estese. " La parte dopo "ma" è ciò che è importante qui. – Donnie

risposta

5

Alcuni benefici al largo della parte superiore della mia testa (sarà modificare tale elenco dopo faccio un po 'più ricerca:.

  • set Quasi-ordinati beneficiano di essere ordinati per heapsort
  • ambienti spazio-cosciente spesso preferiscono la O (1) spazio complessità heapsort. Pensate sistemi embedded.
  • insiemi di dati enorme vantaggio dalla garantita tempo di O (n nlog) in esecuzione in contrapposizione al probabile Bett er tempo di esecuzione di quicksort. Pensa a medicina, spazio, supporto vitale, ecc.
+1

Sono d'accordo sul secondo punto dei sistemi embedded. Sembra un approccio promettente. Ma per gli insiemi quasi ordinati, l'inserimento-ordinamento supererebbe l'heapsort, IMO. Per quanto riguarda il punto 3, anche il mergesort ha quella garanzia, che porta a fallback su di esso anziché su heapsort. – PhD

+0

@PhD: http://dl.acm.org/citation.cfm?id=359026 - Vero. Ricordo di aver letto altrimenti da qualche parte. –

Problemi correlati