【发布时间】:2011-08-01 01:50:17
【问题描述】:
我想在 C 中按大约四百万个 long longs 排序。通常我只会将 malloc() 一个缓冲区用作数组并调用 qsort() 但四百万 * 8 字节是一大块连续内存。
最简单的方法是什么?为此,我将轻松程度置于纯粹的速度之上。我不想使用任何库,结果需要在 Windows 和 Linux 下的普通上网本上运行。
【问题讨论】:
-
价值从何而来,又将去往何处?你一开始就记住了它们吗?
-
400 万乘以 8 约为 32 兆字节。它也不需要是连续的——您只需要为许多 4K 块的映射地址提供连续的地址空间。 IOW,malloc/qsort 应该没问题。
-
32MB?这不是一个大块。那是一小块。
-
@hippietrail:数组将与您的代码相邻,但这只是内存管理硬件造成的假象。实际上,它被分配为更小的(4k,或在某些硬件上为 8K)块。底线:除非您使用的是真正内存受限的系统,否则不会有问题。
-
"640K 对于任何人来说应该都足够了。"
标签: c arrays sorting qsort large-data