排序算法用于此特定方案

时间:2009-02-27 06:11:30

标签: language-agnostic sorting performance

我有两个列表 - 让我们称之为详细信息总计

详细信息中的项目对列表排序的每个键都有多个元素,如下所示:

KEY1
KEY1
KEY2
KEY2
KEY3
KEY3
KEY3

总计中的项目只会包含每个键一次,如下所示:

KEY1
KEY2
KEY3

两个列表都已按键排序。需要组合列表,以便新列表具有详细信息元素,后跟 totals 中的相应元素,如下所示:

KEY1(来自详细信息
KEY1(来自详细信息
KEY1(来自总计) 等

哪种排序算法会在这种情况下获得最佳性能?

(说实话,我只是要更改代码,以便在构建详细信息列表时创建并插入总计中的行,这更像是一个学术问题)

1 个答案:

答案 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