c - 使用基数排序对日期进行排序

标签 c

我有一个给定的日期字符串数组,格式为dd/mm/yyyy

我想用基数排序按月和年升序对日期进行排序,但我不知道如何,因为最终它会根据最大的月份数进行排序

例如我有以下数组: 16/04/2012 2013年1月5日 2012年1月2日 2012年10月11日 2012年1月12日

通常排序后的结果是: 01/02/2012 16/04/2012 01/05/2013 10/11/2012 01/12/2012

虽然我想要的是: 2012年1月2日 2012年4月16日 2012年11月10日 2012年1月12日 2013年1月5日 先是 2012 年,然后是 2013 年

我还没有编写代码,因为我不知道算法是如何工作的,而且我必须仅使用 1 个基数排序

最佳答案

考虑不要根据现有的表示形式对日期进行排序,而是根据单独的排序键进行排序。例如,对于日期 01/02/2012,创建一个排序键 20120201。既然数字按从最高有效位到最低有效位的顺序排列,您可以将排序键视为数字并对它们应用基数排序。

如果您愿意,您不必显式创建排序键,但您必须修改为一轮基数排序选择数字的代码以强制执行正确的顺序。

关于c - 使用基数排序对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408248/

相关文章:

c - malloc/calloc 调用上出现奇怪的 SIGABORT

c - (size_t)-1 和 ~0 之间有什么区别?

c - 四舍五入后打印 float

c - select() C lib函数总是返回0

c - 我如何使用此客户端程序访问 tomcat 资源?

c - C 'for' 循环中的多个条件

C,使用 printf 时的奇怪行为

c - C语言中如何释放指针的内存

从 Swift 调用 C 函数只知道内存地址

c++ - 内存分配中的魔数(Magic Number)