对于这种排序情况,什么是好的(简单)算法/方法:
我有一个项目数组,其中每个项目由 2 个字段组成:(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)
我主要是在寻找一种概念上简单的算法,但如果它是高性能的当然很好。
现在我能想到的最好的是:
- 初始化/创建临时数组 T
- 从数组 A:获取具有最早时间戳的项目 X,其中 ID 不在 T 中
- 将 X 添加到结果集 R,将 X.ID 添加到 T,从 A 中弹出 X
- 只要 X 存在,重复步骤 2-3,否则从步骤 1 重新开始
- A为空时退出