Supponiamo di avere una lista di cose (numeri, per mantenere le cose semplici qui) e ho una funzione che voglio usare per ordinarle, usando SortBy. Ad esempio, il seguente ordina un elenco di numeri da ultima cifra:Ordinamento stabile, ovvero ordinamento minimamente dirompente
SortBy[{301, 201}, Mod[#,10]&]
e notare come due (cioè tutti) questi numeri hanno lo stesso ultima cifra. Quindi non importa quale ordine li restituiamo. In questo caso Mathematica li restituisce nell'ordine opposto. Come posso garantire che tutte le cravatte siano rotte a favore di come gli articoli sono stati ordinati nell'elenco originale?
(So che è un po 'banale, ma mi sembra che questo di tanto in tanto venga fuori così ho pensato che sarebbe stato utile per ottenerlo su StackOverflow.Però postare qualsiasi cosa mi venga in mente come risposta se nessuno mi batte ad esso)
tentativi di rendere questo più ricercabile:. liste con il minimo disturbo, specie con minor numero di swap, personalizzati tie-rottura, smistamento con costosi scambio, stabile ordinamento.
PS: grazie a Nicholas per indicare che questo è chiamato ordinamento stabile. Era sulla punta della mia lingua! Ecco un altro link: http://planetmath.org/encyclopedia/StableSortingAlgorithm.html
Non è che la cosa che viene cercata qui di solito ha appena chiamato un algoritmo di ordinamento stabile? Vedi: http://en.wikipedia.org/wiki/Sorting_algorithm#Stability –