【发布时间】:2015-07-26 18:42:18
【问题描述】:
这个问题是关于在 c++ 中使用数组容器进行排序的。我正在对排序代码进行一些比较。我在 Mac Xcode 中的 c++ 中有一个冒泡排序和一个数组容器。任务是构建一个随机数数组,然后对这些数字进行排序,看看完成排序需要多长时间。冒泡排序对 100,000 个随机数需要 59 秒,对 1,000,000 个随机数需要 6,086 秒。我没有要求冒泡排序尝试超过一百万个数字。数组容器需要一秒钟来处理 100,000 个随机数,并且在运行时出现一百万个随机数的数组大小时会失败。在处理任何其他语句之前,故障发生在 main{...} 内部。 main 中的第一条语句是一个简单的 cout
在 Xcode 中,错误信息是:Thread1: EXC_BAD_ACCESS(code=2, address=0xfff5ecbd258)
适用的代码语句如下所示。
请注意,我在这里重新输入了代码,因此可能存在拼写错误。我希望基本的想法足够完整,让您了解发生了什么。
#define ARRAY_SIZE 1000000
#include <iterator>
#include <array>
下面的代码在main里面
std::array<double, ARRAY_SIZE> A1 = {0};
// Here, I have some code that fills array A1 with random numbers using the rand() function
std::sort(A1.begin(), A1.end());
// some code that prints a selection of the A1 array.
我的问题是……数组容器有上限吗?如果有,我怎么知道它是什么,是否有解决方法? max_size 语句只是返回由#define 语句传递给数组的大小。
有没有更好、更快、对一百万个项目进行排序的方法?
谢谢。
【问题讨论】:
-
这里有一些关于排序算法的有趣答案:cs.stackexchange.com/questions/3/…