当我们讨论分类时,什么是自然顺序?
什么是自然顺序的意思。 假设我有一个名字,年龄和joindate的Employee对象,按照自然顺序sorting?
自然顺序是一种对人类来说似乎是自然的字母数字sorting。
在经典的字母数字sorting中,我们会有这样的东西:
1 10 11 12 2 20 21 3 4 5 6 7
如果您使用自然sorting,它将是:
1 2 3 4 5 6 7 10 11 12 20 21
根据不同的语言,自然sorting有时会忽略大写字母,并强调一个(即所有加重的字母都被视为非加重的字母)。
很多语言都有一个函数来自然地sortingstring。 然而,员工对于语言来说太“高级”了,你必须决定自然地订购它的意义是什么,并创build相应的function。
在我看来,订购员工将首先按照自然sorting的名字sorting,然后是年龄和joindate。
据统计,有两类分类variables。 具有没有数字sorting(名义)的类别的variables和具有sorting类别(有序)的variables。 员工姓名,年龄和joindate的例子实际上被认为是名义variables,所以不能按自然顺序sorting。 例如,如果你把自己的年龄分为儿童,青less年,成年人,可以观察到上升types的sorting,那么自然sorting就可能存在。
对于包含数字的string,这意味着1,2,3,4,5,6,7,8,9,10,11
而不是1,10,11,2,3,4,5,6,7,8,9
如果像我这样的人发现自己阅读以下文章:
https://www.copterlabs.com/natural-sorting-in-mysql/
(顺便说一下,这真的很有用),小心它,因为这是另一种sorting方法。
一个正确的自然sortingalgorithm规定,您按字母顺序排列,但是当您遇到一个数字时,您会将该数字和所有后续数字sorting为单个字符。
自然sorting与首先按string长度sorting无关,然后按字母顺序排列,当两个string长度相同时。 虽然我链接的文章很有趣,但不要犯我犯的错误,认为这是自然sorting的正确方法。