【问题标题】:Partial sorting algorithm部分排序算法
【发布时间】:2010-05-15 12:43:00
【问题描述】:

假设我有 5000 万个特征,每个特征都来自磁盘。

在我的程序开始时,我会处理每个功能,并根据某些条件对某些功能进行一些修改。

在我的程序的这一点上,我正在从磁盘读取一个特征,对其进行处理,然后将其写回,因为我没有足够的内存来一次打开所有 5000 万个特征。

现在假设我要对这 5000 万个特征进行排序,是否有任何优化算法可以做到这一点,因为我不能同时加载每个人?

像部分排序算法之类的?

【问题讨论】:

    标签: algorithm sorting


    【解决方案1】:

    一般来说,您要查找的算法类称为external sorting。这种排序算法最广为人知的例子可能是Merge sort

    此算法(外部版本)的思想是将数据拆分为可以在内存中就地排序(例如 10 万个)并独立排序每个块(使用一些标准算法,例如 Quick sort )。然后你获取块并合并它们(因此你将两个 100k 块合并为一个 200k 块),这可以通过将两个块中的元素读取到缓冲区中来完成(因为块已经排序)。最后,您将两个较小的块合并为一个块,该块将按正确的顺序包含所有元素。

    【讨论】:

    • 有点跑题了,但你的简历中有两个小错字:你写的是abou而不是aboutfunctinal而不是functional
    【解决方案2】:

    如果您使用的是 Unix,请使用 sort ;)

    这可能看起来很愚蠢,但命令行工具已被编程来处理这种情况,您不必重新编程。

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2011-07-04
      • 2017-05-11
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多