我有一个给定的日期字符串数组,格式是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-05-02 06:13:06
考虑对日期进行排序,而不是在所拥有的表示上排序,而是在单独的排序键上排序。例如,对于日期01/02/2012,创建一个排序键20120201。现在,数字按照从最重要到最不重要的顺序排列,您可以将排序键看作数字,并将基排序应用于它们。
如果您愿意,您不需要显式创建排序键,但是您必须修改为一轮基数排序选择一个数字的代码,以强制执行正确的排序。
发布于 2012-05-02 05:50:25
你将需要申请两次基数排序,首先在月份,然后在一年。如果您只使用基数排序一次,您将不得不在一年排序,但您的月份在同一年内将不会被订购。也许您可以在一年内的月份上应用不同的算法,或者根本不使用基排序。你为什么只能排序一次,有什么特别的原因吗?
https://stackoverflow.com/questions/10408248
复制相似问题