当我们谈论排序时,自然顺序是什么?

时间:2011-03-02 13:11:08

标签: sorting

自然顺序是什么意思。假设我有一个Employee对象,其中包含姓名,年龄和加入日期,按自然顺序排序?

5 个答案:

答案 0 :(得分:53)

自然排序是一种字母数字排序,对人类来说似乎很自然。

在经典的字母数字排序中,我们会有类似的东西:

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

如果您使用自然排序,它将是:

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

根据语言的不同,自然顺序有时会忽略大写字母并强调一个(即所有强调的字母都被视为非强调字母)。

许多语言都有自然命令字符串的功能。但是,员工对语言来说太“高级”,你必须自己决定自然订购它们的意义并创建相应的功能。

在我看来,订购员工将首先按名称使用自然排序,年龄和最后加入日期对它们进行排序。

根据统计,有两种类型的分类变量。变量具有不具有数字排序(标称)的类别和具有有序类别(顺序)的变量。 Employee的名称,年龄和加入日期的示例实际上被视为名义变量,因此不能按自然顺序排序。如果您将孩子,青少年,成年人的水平分类,可以存在自然排序,例如在年龄中,人们可以观察到升序排序。

答案 1 :(得分:4)

对于包含数字的字符串,它表示1,2,3,4,5,6,7,8,9,10,11而不是1,10,11,2,3,4,5,6,7,8,9

答案 2 :(得分:0)

如果像我这样的人发现自己正在阅读以下文章:

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

(顺便说一句,这非常有用),请注意它,因为这是另一种排序方法。

正确的自然排序算法表明您按字母顺序排序,但遇到数字时,您将订购该数字,并将所有后续数字作为单个字符。

自然排序与首先按字符串长度排序无关,然后在两个字符串具有相同长度时按字母顺序排序。虽然我链接的文章很有意思,但不要犯错误,认为这是自然排序的正确方法。

答案 3 :(得分:0)

对于Java,由Comparable接口提供的排序称为自然排序,因此Comparator接口可以提供不自然的排序。

答案 4 :(得分:0)

这是一个古老的问题,但简单地说,Natural Order是可比较元素的可枚举集合的升序顺序:

  • 对于数字:1, 2, 3...
  • 对于字符:A, B, C...