Quando la gente dice "algoritmo di ordinamento" spesso si riferisce a "algoritmo di ordinamento di confronto", che è un algoritmo che dipende solo dalla possibilità di chiedere "è questa cosa più grande o più piccola di quella ". Quindi, se sei limitato a porre questa domanda sui dati, non otterrai mai più di n * log (n) (questo è il risultato di una ricerca di log (n) degli ordinamenti fattoriali di un set di dati) .
Se riesci a sfuggire ai vincoli di "sorta di confronto" e a porre una domanda più sofisticata su un dato, ad esempio "qual è la base 10 di questi dati" allora puoi inventare un numero qualsiasi di linee algoritmi di ordinamento del tempo, prendono solo più memoria.
Questo è uno scambio spazio nel tempo. Comparason sort prende poca o nessuna ram e funziona in tempo N * log (n). ordinamento radix (ad esempio) eseguito in memoria O (n) e memoria O (log (radix)).
fonte
2009-04-14 23:46:16
Potresti controllare di nuovo la domanda? N vs n? [0..n^31] vs [0..2^31] vs [0..2^32-1]? –
@danbruc - Buon punto. Inoltre, la revisione 1 dice [0..n^3-1] - perché è [0..n^31] ora? –
Non ho idea del perché sia cambiato. Non ricordo di aver mai aggiornato. –