题目(2018-11-21)
有一个项目,由于多人维护,导致版本号规则,例如:
const version = ['1.45.0', '1.5', '6', '3.3.3.3.3']
现在需要对版本号进行从小到大排序,注意: 1.45.0
是大于1.5
的
实现
直接用sort
函数比较是不行的,sort
函数在比较字符串的时候,是比较字符串的Unicode进行排序的:
'1' < '2'; // true
'1' < '10'; // false
显然是行不通的
我的思路是,先将version
数组成员通过split('.')
拆分成一个个数组
const version = ['1.45.0', '1.5', '6', '3.3.3.3.3'];
const temp = [[1, 45, 0], [1, 5], [6], [3, 3, 3]]
在排序的过程中,分为两层,外层的核心是利用选择排序,选择排序过程中进行数值比较时,比较的成员仍然是两个数组: