2011-03-02 15 views

risposta

40

ordinamento naturale è una sorta di sorta alfanumerico che sembra naturale per gli esseri umani.

In una sorta alfanumerico classica avremo qualcosa di simile:

1 10 11 12 2 20 21 3 4 5 6 7 

se si sta utilizzando ordinamento naturale, sarà:

1 2 3 4 5 6 7 10 11 12 20 21 

A seconda della lingua, ordinamento naturale a volte ignorano Lettere maiuscole e accentuate (cioè tutte le lettere accentuate sono trattate come la loro controparte non accentuata).

Molte lingue hanno una funzione per ordinare una stringa in modo naturale. Tuttavia, un Dipendente è troppo "di alto livello" per la lingua, è necessario decidere cosa significa per te ordinarli in modo naturale e creare la funzione corrispondente.

Dal mio punto di vista, l'ordine dei dipendenti inizierà ordinandoli per nome utilizzando un tipo naturale, quindi l'età e infine la data di adesione.

Secondo le statistiche ci sono due tipi di variabili categoriali. Variabili aventi categorie senza un ordinamento numerico (nominale) e quelle che hanno categorie ordinate (ordinale). L'esempio del nome, dell'età e della data di iscrizione di un dipendente è in realtà considerato una variabile nominale, quindi non ci può essere alcun ordinamento per ordine naturale. L'ordinamento naturale potrebbe esistere per esempio in età se l'hai classificato in livelli di bambino, adolescente, adulto, in cui si può osservare un tipo di ordinamento ascendente.

+0

Ecco l'algoritmo di ordinamento naturale in javascript per maggiori informazioni 1. algo: http: //js-naturalsort.googlecode.com/svn/trunk/ naturalSort.js 2. Unit Test: http://code.google.com/p/js-naturalsort/source/browse/trunk/unit-tests.html –

+1

Un'altra buona descrizione e un'implementazione più piccola: http: // blog. codinghorror.com/sorting-for-humans-natural-sort-order/ – dresende

+0

In Java, l '"ordine naturale" non è quello che "sembra naturale" da qualche misura soggettiva, ma per gli oggetti, oggettivamente l'ordine imposto dal 'Comparable # metodo di confronto, tuttavia sembra agli umani. –

4

Per le stringhe che contengono numeri significa 1,2,3,4,5,6,7,8,9,10,11 invece di 1,10,11,2,3,4,5,6,7,8,9

+0

Quindi questo riguarda solo le stringhe? Un oggetto con solo età e data non ha ordinamento naturale? – vinoth

+0

Una data viene in genere ordinata come se fosse una stringa "aaaa-mm-gg". In questo caso non è necessario l'ordinamento "naturale" poiché è già stato eseguito poiché i numeri piccoli hanno zeri iniziali. – ThiefMaster

+0

Inoltre, lingue diverse hanno regole di ordinamento o regole di confronto differenti, quindi l'ordine naturale dipende. Vedi [Wikipedia] (http://en.wikipedia.org/wiki/Collation) – vonPryz

0

Se uno come me si è trovato a leggere il seguente articolo:

https://www.copterlabs.com/natural-sorting-in-mysql/

(che tra l'altro è veramente utile), attenzione perché questo è un altro metodo di ordinamento.

Un corretto algoritmo di ordinamento naturale indica che si ordina in ordine alfabetico, ma quando si incontra una cifra si ordinerà quella cifra e tutte le cifre successive come un singolo carattere.

L'ordinamento naturale non ha nulla a che fare con l'ordinamento in base alla lunghezza della stringa, quindi in ordine alfabetico quando due stringhe hanno la stessa lunghezza. Anche se l'articolo che ho collegato è interessante, non commettere l'errore che ho fatto e penso che sia il modo corretto di ordinare naturalmente.

Problemi correlati