Ci sono molti casi in cui gli alberi rossi non sono male per l'ordinamento. Il mio test ha mostrato, rispetto a merge naturali sorta, che gli alberi rosso-neri Excel in cui:
Gli alberi sono migliori per Dups: Tutti i test in cui hanno bisogno di essere eleminated dups, algoritmo di albero è meglio.Questo non è sorprendente, dal momento che l'albero può essere mantenuto molto piccolo fin dall'inizio, per cui gli algoritmi progettati per l'ordinamento di array in linea potrebbero passare intorno a segmenti più grandi per un tempo più lungo.
Gli alberi sono migliori per Casuale: Tutti i test con algoritmo ad albero casuale sono migliori. Anche questo non è sorprendente, poiché in una distanza tra gli alberi gli elementi sono più corti e lo spostamento non è necessario. Quindi l'inserimento ripetuto in un albero potrebbe richiedere meno sforzo rispetto all'ordinamento di un array.
Quindi abbiamo l'impressione che l'ordinamento di unione naturale eccelle solo in casi speciali ascendenti e discendenti. Che non si può nemmeno dire per un ordinamento rapido.
Sintesi con i casi di test here.
P.S .: si noti che l'uso di alberi per l'ordinamento non è banale. Uno non deve solo fornire una routine di inserimento ma anche una routine che può linearizzare l'albero in un array. Attualmente stiamo usando una routine get_last e una predecessore, che non ha bisogno di uno stack. Ma queste routine non sono O (1) poiché contengono loop.
fonte
2015-10-28 00:12:37
Generalmente, gli alberi sono preferiti per la ricerca. Ordina: Ordina una volta. Alberi: cerca più volte. –
Una passeggiata in ordine su un albero richiede O (1) tempo per nodo visitato, quindi dovrebbe essere eseguito in O (n) non O (n lg n). – momeara
In ordine walk necessita di stack space oppure non O (1) get_first e successore. –