自然顺序是什么意思。假设我有一个Employee对象,其中包含姓名,年龄和加入日期,按自然顺序排序?
答案 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...