目录
日志排序
考察排序。
题目描述
运维工程师采集到某产品现网运行一天产生的日志N条,现需根据日志时间按时间先后顺序对日志进行排序。
日志时间格式为:
H:M:S.N
H表示小时(0-23),M表示分钟(0-59),S表示秒(0-59),N表示毫秒(0-999)
时间可能并没有补齐,也就是说:01:01:01.001,也可能表示为1:1:1.1,
输入描述
第一行输入一个整数N,表示日志条数,1<=N<=100000
接下来N行输入N个时间
输出描述
按时间升序排序之后的时间
如果有两个时间表示的时间相同,则保持输入顺序
示例1
输入
2
01:41:8.9
1:1:09.211
输出
1:1:09.211
01:41:8.9
示例2
输入
3
23:41:08.023
1:1:09.211
08:01:22.0
输出
1:1:09.211
08:01:22.0
23:41:08.023
示例3
输入
2
22:41:08.023
22:41:08.23
输出
22:41:08.023
22:41:08.23
说明
两个时间表示的时间相同,保持输入顺序
解析
需要比较每一位上的大小,从小到大排序,可以通过将冒号去掉,得到的相同位数的数字,不足个数的数需要补充0,最后拼接成一个数,进行比较大小。
由于每次都要判断位数补0比较麻烦,这里可以通过对不同位上的数乘以不同大小数后加起来达到相同的目的,保证以前位数的大小优先进行排序
答案
// 不需要以':'分隔后每个比较
// 注意相等的情况是不需要换位置的
function logSort(n, ...lo