前言
相信很多小伙伴看到 [1,7,3,10].sort() 这一道题,首先想到的结果绝对是 [1,3,7,10]。
很不辛,你答错了,正确答案是[1,10,3,7]。如果你答错了,显然你还没了解过字典序。看完下文了解完字段序你就明白了~
本期博客参与了【新星计划】,还请大家三连支持一下🌟🌟🌟感谢感谢💓💓💓
字典序简介
在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。
上述摘抄自百度百科,你想必没有看明白是什么意思。简言之,它是一种对于随机变量根据英文单词在字典中的先后顺序形成序列的排序方法。
举个栗子:
在对比alpha和beta的顺序时,先比较第一个单词在字母表中的顺序,可以得到alhts在beta之前;
而比较account和advanced时,由于第一个单词相同,就会去比较第二个单词在字母表中的顺序,可得account在advanced之前,以此类推,当前一个字母相同时,会去比较下一个字母,直至有一位可以比较出大小来,则不再继续比较。
在计算机领域中,这个字典序就不仅仅用来比较英文单词了,而是比较任意字符串。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。
在计算机中,25个字母以及数字字符,字典排序如下:
'0' < '1' < '2' < ... < '9' < 'a' < 'b' < ... < 'z'
题解
所以看到这里[1,7,3,10].sort()为什么结果是[1,10,3,7]呢?就是因为在JavaScript中,默认采用的就是字典序排序。
先对比第一位,排序为 1,10,3,7
对比第二位,只有10有第二位,顺序不用变
最后
具体用js算法实现大家可以思考一下,这也是各个大厂经常考察的算法题,例如字典序最小问题。好了,本期博文到这里就结束啦~觉得有帮助的小伙伴麻烦三连支持下哦💓💓💓