运维日志排序
2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型
华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解
其它语言题解链接
华为OD机试双机位C卷 - 运维日志排序 (Python & C++ & JAVA & JS & GO)
题目描述
运维工程师\]采集到某产品线网运行一天产生的日志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
## 题解
### 思路
`字符串处理 + 自定义排序`题型
1. 自定义结构体,保存每个日志时间的`原始字符串`,`时间转换为毫秒之后的值`,`输入顺序`。
2. 接受输入的时间字符串,提出每个字符串中的时、分、秒、毫秒值,统一转换为毫秒,保存至结构体数组中。
3. 将结构体数组自定义排序按照`时间升序,时间相同按照输入顺序升序`。
4. 按顺序输出排序之后的日志记录原始字符串。
### code
```c
#include