2011-03-02 13 views

Respuesta

40

ordenamiento natural es una especie de tipo alfanumérico que parece natural para los seres humanos.

En una especie alfanumérica clásica vamos a tener algo como:

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

Si está utilizando ordenamiento natural, será:

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

Dependiendo del idioma, a veces ignoran ordenamiento natural Mayúsculas y acentuación (es decir, todas las letras acentuadas se tratan como su contraparte no acentuada).

Muchos idiomas tienen una función para ordenar una cadena naturalmente. Sin embargo, un empleado es demasiado "alto nivel" para el idioma, debe decidir lo que significa para usted ordenarlos de forma natural y crear la función correspondiente.

Desde mi punto de vista, el pedido del empleado comenzará ordenando por nombre utilizando un tipo natural, luego la edad y finalmente la fecha de unión.

Según las estadísticas, hay dos tipos de variables categóricas. Variables que tienen categorías sin un orden numérico (nominal) y aquellas que sí tienen categorías ordenadas (ordinales). El ejemplo del nombre, la edad y la fecha de incorporación de un empleado se considera en realidad una variable nominal, por lo que no se puede ordenar por ordenamiento natural. El ordenamiento natural podría existir, por ejemplo, en la edad en que lo categorizaste en niveles de niño, adolescente, adulto, en el que se puede observar un tipo de clasificación ascendente.

+0

Aquí está el algoritmo de clasificación natural en javascript para más comprensión 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

Otra buena descripción y una implementación más pequeña: http: // blog. codinghorror.com/sorting-for-humans-natural-sort-order/ – dresende

+0

En Java, el "orden natural" no es "natural" por alguna medida subjetiva, sino que para los objetos, objetivamente es el orden impuesto por el 'Comparable # comparar el método de ', sin embargo, parece a los humanos. –

4

Para las cadenas que contienen los números que significa 1,2,3,4,5,6,7,8,9,10,11 en lugar de 1,10,11,2,3,4,5,6,7,8,9

+0

¿Esto se trata solo de cadenas? ¿Un objeto con solo fecha y edad no tiene un orden natural? – vinoth

+0

Una fecha generalmente se ordena como si fuera una cadena 'aaaa-mm-dd'. En este caso, no es necesario realizar una clasificación "natural", como ya se hizo, ya que los números pequeños tienen ceros a la izquierda. – ThiefMaster

+0

Además, diferentes idiomas tienen diferentes reglas de clasificación o colaciones, por lo que el orden natural depende. Ver [Wikipedia] (http://en.wikipedia.org/wiki/Collation) – vonPryz

0

Si alguien como yo se encontró leer el siguiente artículo:

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

(que por cierto es muy útil), ten en cuenta que debido a eso es otro método de clasificación.

Un algoritmo de ordenamiento natural correcto indica que se ordena alfabéticamente, pero cuando se encuentra con un dígito, se ordena ese dígito y todos los dígitos posteriores como un solo carácter.

La clasificación natural no tiene nada que ver con la clasificación por longitud de cadena primero, y luego alfabéticamente cuando dos cadenas tienen la misma longitud. Aunque el artículo que relacioné es interesante, no cometa el error que cometí y piense que esa es la forma correcta de ordenarlo de forma natural.

Cuestiones relacionadas