0

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

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

例如,我有以下数组: 16/04/2012 01/05/2013 01/02/2012 10/11/2012 01/12/2012

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

而我想要的是: 01/02/2012 16/04/2012 10/11/2012 01/12/2012 01/05/2013 首先是 2012 年,然后是 2013 年

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

4

2 回答 2

1

您将需要应用基数排序两次,首先在月份,然后在年份。如果您只使用一次基数排序,则必须按年份排序,但同一年内的月份将不会被排序。也许您可以对一年内的月份应用不同的算法,或者根本不使用基数排序。您只能排序一次是否有特殊原因?

于 2012-05-02T05:50:25.113 回答
1

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

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

于 2012-05-02T06:13:06.053 回答