Con letteralmente decine di algoritmi di ordinamento disponibili , determinare quale funziona meglio con il vostro sistema dipende confronto di diversi fattori , quali la dimensione della lista , la velocità o la complessità dell'algoritmo , e se si intende utilizzare un tasto per ordinare . Complessità
La complessità di un algoritmo di ordinamento è misurata da O ( n) , o il " dell'ordine di n ", dove n è la dimensione della lista . Esso misura quanti passaggi ci vuole per ordinare l'elenco e calcola il suo migliore , peggiore e medio tempo per farlo. Complessità comuni includono n come un caso migliore per i tipi come insertion sort e shell sort , n log n , ( con un logaritmo in base 2 , non una base - 10) , che è la complessità di merge sort e heapsort , e n ² , che è più lento del primo tempo ed è la velocità di ordinamento per selezione
lista Condizione
volte si saprà come gli articoli ordinati in un elenco sono organizzati . : per esempio , se sono quasi ordinati , in ordine inverso , o una lista con alcuni oggetti unici . Tale conoscenza consente di selezionare un algoritmo efficiente per risolvere la cosa . Ad esempio, utilizzando insertion sort per ordinare una lista in ordine invertito ha un tempo di esecuzione di n ² , mentre heap sort può farlo più velocemente , in n log n tempo . In un elenco che viene quasi allineati , insertion sort è più veloce di heap sort . Quando l'elenco contiene un insieme del tutto casuale di dati , selezionare un algoritmo con complessità nel caso medio di n log n tempo di esecuzione , come heap sort , quicksort o merge sort .
List Size
Alcuni algoritmi sono più difficili da usare rispetto ad altri, quindi il numero di elementi in un elenco e con quale frequenza è necessario ordinare le può aiutare a determinare l'algoritmo che sceglierete . Sorta come insertion sort sono veloci e lavorano bene durante l'ordinamento liste più piccole , e sono facili da implementare , ma sono lenti con le liste più grandi. Specie che utilizzano un divide et impera algoritmo come quicksort e merge sort sono più difficili da realizzare , ma le liste sono specie più grandi più veloce nei casi medi .
Stabilità
< p > stabilità algoritmo descrive se l'ordinamento mantiene l' ordine degli elementi in base a una chiave di ordinamento . Ad esempio, utilizzando il primo carattere come chiave per una lista che ha " John ", " Steve " e " Jim ", in questo ordine , una stabile sorta algoritmo l'elenco di " John ", " Jim " e " Steve ", mentre un algoritmo instabile può o non può ordinare " Jim " prima di " John ". Merge sort , insertion sort e bubble sort sono tutti gli algoritmi stabili mentre Shell sort , selection sort e heap sort non sono .