Efficace ordinamento funzionale
Domanda
Sto programmando una funzione per un TI-Nspire , così posso 't utilizzare i comandi incorporati dall'interno di una funzione. Qual è l'algoritmo più generalmente efficienti per l'ordinamento di un elenco di numeri senza modificare la lista stessa? (Ricorsione e la lista-splitting sono gioco equo, come è uso generale della matematica.)
Soluzione
Mergesort è semplice, semplice, efficiente e stabile:. Dividere la lista, ordinare in modo ricorsivo, e unire i risultati
Per essere più specifici, mergesort prende O (N log N), che è asintoticamente ottimale. Inoltre, in pratica (con entrambi gli algoritmi modificati per liste brevi sottoliste con un fine particolare ordinamento), per fusione può essere un concorrente vicino alla Modified quicksort utilizzati nei / C ++ librerie standard C.
Edit. Differenza sul posto come tipi quicksort e inserzione, mergesort richiede memoria ausiliaria, ed è semplice da implementare copiando anziché scambiando