gpt4 book ai didi

c - 找到最小时间和日期戳的有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 10:57:32 24 4
gpt4 key购买 nike

我创建了一个具有不同时间戳和日期的表。时间和日期的结构如下:

typedef struct structTimeDate
{
int seconds;
int minutes;
int hours;
int day;
int month;
int year;
} TimeDate;

表的每一行都有一个 TimeDate .我想实现的是找到最少的 TimeDate从表中表示日期和时间最早的那个。想到了迭代表写 ifelse if实现它,但它似乎复杂且容易出错。

是否有任何现有的算法可以帮助实现我的目标?我不是在找人给我写代码。我想要一个起点或任何适合我要求的算法。
提前致谢。

最佳答案

if then else没那么糟糕。

if (x.year < y.year) return -1;
if (x.year > y.year) return 1;
if (x.month < y.month) return -1;
if (x.month > y.month) return 1;
...
if (x.sec < y.sec) return -1;
if (x.sec > y.sec) return 1;
return 0;

替代:

如果只需要比较订单并且成员在主要范围内,则创建一个人工整数时间戳。
// Think of date as base 13, 32, 24, 60, 60
long long ts = ((((x.year*13LL + x.month)*32 + x.day)*24 + x.hour)*60 + x.min)*60 + x.sec;

然后简单地比较时间戳的整数值以找到最大值。

需要额外的工作来支持负年。

使用 2 的幂常数可以降低效率。
long long ts = ((((x.year*16LL + x.month)*32 + x.day)*32 + x.hour)*64 + x.min)*64 + x.sec;

关于c - 找到最小时间和日期戳的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59087352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com