华为OD机试真题双机位C卷 【运维日志排序】C语言实现

运维日志排序

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 #include typedef struct { long long t; int idx; char s[20]; } Time; // 自定义排序 时间升序,时间相同按照输入顺序 int cmp(const void *a, const void *b) { Time *ta = (Time*)a, *tb = (Time*)b; return ta->t != tb->t ? (ta->t - tb->t ) : ta->idx - tb->idx; } int main() { int n, H, M, S, N; scanf("%d", &n); Time *arr = malloc(n * sizeof(Time)); for (int i = 0; i < n; i++) { scanf("%s", arr[i].s); sscanf(arr[i].s, "%d:%d:%d.%d", &H, &M, &S, &N); // 统一转换为毫秒 arr[i].t = (long long)H * 3600000 + M * 60000 + S * 1000 + N; arr[i].idx = i; } // 自定义排序 qsort(arr, n, sizeof(Time), cmp); // 输出结果 for (int i = 0; i < n; i++) printf("%s\n", arr[i].s); free(arr); return 0; } ```

相关推荐
irpywp16 小时前
Ghostling:一款极简的终端嵌入引擎
c语言·github
她说彩礼65万16 小时前
C语言 Static的用法
java·linux·c语言
万粉变现经纪人16 小时前
如何解决 pip install shapely 报错 GEOS C 库未找到 问题
c语言·开发语言·python·pycharm·bug·pandas·pip
_饭团16 小时前
C 语言内存函数全解析:从 memcpy 到 memcmp 的使用与模拟实现
c语言·开发语言·c++·学习·算法·面试·改行学it
是翔仔呐16 小时前
C语言从黑框框到控硬件!51单片机零基础保姆式全系列教程 开篇前言+全书总览
c语言·开发语言·单片机·嵌入式硬件·gitee·51单片机
爱编码的小八嘎16 小时前
C语言完美演绎5-2
c语言
wengqidaifeng16 小时前
备战蓝桥杯----C/C++组 (一)数据结构与STL讲解(上):顺序表、链表、栈与队列——从手写到调用,一文搞懂四种线性结构
c语言·数据结构·蓝桥杯
inputA17 小时前
C语言可变参数(va_list、va_start、va_end、va_arg)
c语言·笔记
计算机安禾17 小时前
【C语言程序设计】第38篇:链表数据结构(二):链表的插入与删除操作
c语言·开发语言·数据结构·c++·算法·链表
lingran__17 小时前
C语言预处理详解(C语言知识完结篇)
c语言·开发语言