生成随机数并插入已包含n个数的数组时出现性能问题
Performance Issue while generating random numbers and inserting into an Array with already n numbers
这是我用来生成随机数并将其插入数组的代码。假设我想生成1000000个随机数,并在生成的随机位置插入已经具有MAXSIZE数量元素的数组。下面的逻辑实际上正在崩溃我的系统,因为堆内存很长。
此处最大尺寸=1000000
srand(time(NULL));
for (int i = 0; i<MAXSIZE; i++)
{
int randomNo = rand() % MAXSIZE;
randArray[i] = randomNo;
}
//Inserting Random numbers for an Array at a random position
for (int i = position, j = 0; i < (2 * size); i++, j++)
{
bArray[j] = aArray[i];
aArray[i] = randArray[j];
}
for (int i = position + size, j = 0; i < ((2 * size)); i++, j++)
{
aArray[i] = bArray[j];
}
有人能建议一种更好的方法在这里编写代码吗?这样系统就不会因为一组很大的数字而崩溃,并将其放入数组中。
例如,最初我将在一个数组中有10个数字。现在我将再生成10个随机数,并将其插入0-10中随机生成的位置。所以输出现在变成了20个元素。为此,我首先生成大小为2*10的数组。在我的问题中,这个数字是100000或更多,而不是10。
更准确地说:
我想要的是:例:内膜阵列Arr[10]为1,3,5,2,6随机数组生成为:2、3、5、6、7生成的随机位置为:3最终数组应为:1、3、2、3、5、6、7、5、2、6注意:数字可以是重复的
我做了假设:
- 随机数将只用于填充最终数组,而不会用于其他任何地方
- 数组已具有所需的大小
实际代码:
srand(time(NULL));
// position -> position at which numbers should be inserted
// size -> size of table
// n -> how many random number should be inserted
if(position + n > size) n = size - position;
for (int i = size; i >= 0; i--)
{
if(i >= position + n) {
aArray[i] = aArray[i-n];
}
if(i >= position && i <= position + n) {
aArray[i] = rand() % MAXSIZE;
}
}
若创建的原始数组的大小可以填充任何后续迭代,那个么它将节省相当多的计算/内存。如果大小太小,此算法仍然有效。只需将初始数组复制到更大的数组中。
相关文章:
- 数组C++问题中最大和第二大的数字
- 二维数组问题
- 数组问题:变量周围的堆栈'arr'已损坏
- 无符号字符数组问题
- 数组问题(if (zeds[i].x == zeds[i].x))
- 字符数组问题
- C++中的turbo数组问题
- 输入和输出的2D字符数组问题
- 多维数组问题
- 指针和数组指向数组问题
- 如何随机排列数组问题
- C++ 多维数组问题 - 多次打印条目
- C++ 2D 读入数组问题
- C++读入 2D 数组问题
- 指针和多维数组问题
- C++多项式类,指针数组问题
- 在数组问题(C++)中查找偶数
- 二维std::数组问题
- 向量/数组问题,不能给变量赋索引/不能使用变量作为数组大小(索引)c++
- 指针数组问题