我有两个列表 - 让我们称之为详细信息和总计。
详细信息中的项目对列表排序的每个键都有多个元素,如下所示:
KEY1
KEY1
KEY2
KEY2
KEY3
KEY3
KEY3
等
总计中的项目只会包含每个键一次,如下所示:
KEY1
KEY2
KEY3
等
两个列表都已按键排序。需要组合列表,以便新列表具有详细信息元素,后跟 totals 中的相应元素,如下所示:
KEY1(来自详细信息)
KEY1(来自详细信息)
KEY1(来自总计)
等
哪种排序算法会在这种情况下获得最佳性能?
(说实话,我只是要更改代码,以便在构建详细信息列表时创建并插入总计中的行,这更像是一个学术问题)
答案 0 :(得分:2)
如果您正在考虑将两个列表合并为一个,并且它们已经排序,那么您就不应该求助。
简单合并将如下所示。这假设您的假设是正确的并且没有“裸”细节或总线(没有总计或没有细节的总计的细节)。如果有,你需要额外的代码来处理,但原则是相同的。
Get first detail-list
Get first total-list
While total-list not finished:
If detail-list.key > total-list.key:
Output total-list
Get next total-list
Next while
Output detail-list
Get next detail-list