Nella lettura di vari algoritmi di ordinamento ho visto che alcuni sono "stabili" e altri no. Cosa significa e quali compromessi sono coinvolti su quella base quando si seleziona un algoritmo?
Nella lettura di vari algoritmi di ordinamento ho visto che alcuni sono "stabili" e altri no. Cosa significa e quali compromessi sono coinvolti su quella base quando si seleziona un algoritmo?
Risposte:
Un ordinamento stabile è uno che preserva l'ordine originale del set di input, in cui l'algoritmo di confronto non distingue tra due o più elementi.
Prendi in considerazione un algoritmo di ordinamento che ordina le carte per rango , ma non per seme. L'ordinamento stabile garantirà il mantenimento dell'ordine originale delle carte con lo stesso valore; l'ordinamento instabile no.
Gli algoritmi stabili preservano l'ordine relativo degli elementi.
Quindi un algoritmo di ordinamento stabile manterrà l'ordine relativo dei valori che si confrontano come uguali.
Prendi in considerazione un algoritmo di ordinamento in cui ordiniamo una raccolta di punti 2d in base alla loro dimensione X.
Raccolta da ordinare: {(6, 3), (5, 5), (6, 1), (1, 3)}
Stabile ordinato: {(1, 3), (5, 5), (6, 3), (6, 1)}
Ordinati regolari: {(1, 3), (5, 5), (6, 3), (6, 1)}
o{(1, 3), (5, 5), (6, 1), (6, 3)}
Per quanto riguarda il compromesso ... beh, l'ordinamento stabile è meno efficiente, ma a volte ne hai bisogno.
Ad esempio, quando un utente fa clic sull'intestazione di una colonna per ordinare i valori in un'interfaccia utente, è ragionevole aspettarsi che il suo precedente ordinamento venga utilizzato in caso di valori uguali.