对于这种排序情况,什么是好的(简单的)算法/方法:
我有一个项目数组,其中每个项目由两个字段组成:(ID,时间戳)
有许多对具有相同ID的项目。
我希望对数组进行排序,以便在ID之间尽可能多地交替项,从具有最早时间戳的项开始。
例如,使用此输入:
(1、15:00)
(1、15:05)
(1、15:10)
(2、15:15)
(2、15:20)
(2、15:25)
(3、15:30)
(4、15:35)
(3、15:40)
我会得到这个输出:
(1、15:00)
(2、15:15)
(3、15:30)
(4、15:35)
(1、15:05)
(2、15:20)
(3、15:40)
(1、15:10)
(2、15:25)
我主要是在寻找一种概念上简单的算法,但如果它是性能良好的,那当然很好。
现在我能想到的最好的事情是:
发布于 2013-02-13 22:19:45
当您完成时,如果我已经正确地理解了问题,结果将是您想要的顺序。
下面是Java中的一个示例,它使用了番石榴TreeMultimap
(未经测试):
TreeMultimap<Id, Timestamp> map = new TreeMultimap<Id, Timestamp>();
for (/* ... every item ... */) {
map.put(item.getId(), item.getTimestamp());
}
List<Entry> outputList = new ArrayList<Entry>();
while (!map.isEmpty()) {
for (Id key : map.keySet()) {
Timestamp value = map.get(key).first();
outputList.add(new Entry(key, value));
map.remove(key, value);
}
}
return outputList;
https://stackoverflow.com/questions/14864029
复制相似问题