首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何对30 you文件进行排序,重复使用1-1000个数字。

如何对30 you文件进行排序,重复使用1-1000个数字。
EN

Stack Overflow用户
提问于 2015-10-13 19:03:10
回答 1查看 112关注 0票数 0

我有30 gb文件,这是只有1-1000个数字重复。我想知道如何对该文件进行排序,您需要首先在内存中加载该文件。

我已经通过了其他链接,但不同意的点,排序它多块文件,并将它保存在临时文件。正如我所相信的,在进程结束时,我将有两个大文件(每个15 GB )来排序。我不能加载每一个合并和排序。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 19:41:13

如果所有的值都在1.1000范围内,那么您可以使用一个简单的计数排序版本来完成这个任务。

  • 创建一个counters[1000]数组(如果数组是基于零的,则为1001),全部初始化为零。
  • 当从文件增量n读取值counters[n]时,读取该文件。
  • 现在您知道每个值在输入文件中出现了多少次。
  • 循环通过counters,为每个索引n编写ncounters[n]副本以输出。例如,如果counters[100] == 5然后编写100以输出5时间。

您不需要将整个文件保存在内存中。您只需计算每个值在文件中出现的次数。这足以创建原始文件的排序版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33115898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文