【问题标题】:Sort algorithm to use for this specific scenario用于此特定场景的排序算法
【发布时间】:2010-10-10 06:30:22
【问题描述】:

我有两个列表 - 我们称它们为 detailstotals

details 中的项目对于列表排序的每个键都有多个元素,如下所示:

KEY1
KEY1
KEY2
KEY2
KEY3
KEY3
KEY3
等等

totals 中的项目每个键只有一次,例如:

KEY1
KEY2
KEY3
等等

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

KEY1(来自详细信息
KEY1(来自详细信息
KEY1(来自totals) 等等

在这种情况下,哪种排序算法会产生最佳性能?

(老实说,我只是要更改代码,以便在构建 details 列表时创建并插入 totals 中的行,这更像是一个学术问题)

【问题讨论】:

    标签: language-agnostic sorting performance


    【解决方案1】:

    如果您正在考虑将这两个列表合并为一个,并且它们已经排序,那么您不应该采取措施。

    一个简单的合并就可以了,如下所示。这是假设您的假设是正确的,并且没有“裸”的细节或总行(没有总计的细节或没有细节的总计)。如果有,则需要额外的代码来处理,但原理是一样的。

    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
    

    【讨论】:

    • 我想当我说“排序”时,我的意思是“将元素按顺序排列”。现有代码会进行排序,因为列表没有按顺序排列,我刚刚更新了数据库以将它们正确排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2023-03-23
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多