一个简单的程序来对随机数进行排序
a simple program to sort random numbers
我刚刚制作了一个简单的程序,该程序按顺序排列随机数:
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void swap(int &a,int &b){
int temp=a;
a=b;b=temp;
}
int main(int argc, char* argv[]){
static int option;
if(argv[1])option=atol(argv[1]);
else option=0;
srand((unsigned)time(0));
const int size=option;
int array[size];
for(int i=0;i<size;i++){
array[i]=rand()%size;
}
//algorithm
for(int i=0;i<size;i++){
for(int j=i+1;j<size;j++){
if(array[i]>array[j])swap(array[i],array[j]);
}
}
//print
for(int i=0;i<size;i++){
cout<<array[i]<<' ';
}
return 0;
}
您这样运行:
time ./a.exe (how much random number to generate)
它的工作原理最高可达100000,但不仅仅是我的SEG故障错误。我究竟做错了什么?是因为记忆不足吗???还是OS秘密地做的事情,我不承认?
"是因为内存不足吗?"
是的,您的堆栈尺寸可能太小而无法容纳它。使用
std::vector<int> array(size);
而不是
int array[size];
是的,您的堆栈大小太小,您可以在堆中分配数组,例如: int *array = (int*)malloc(size*sizeof(int))
。当然,您可以使用向量,但是向量具有更复杂的封装,因此性能不是很好。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 需要关于如何将我的随机数数组连接到冒泡排序的帮助
- C++ - 如何保持半随机数组在循环中排序
- 随机数外排序
- 一个简单的程序来对随机数进行排序
- 冒泡排序随机数
- 将随机数插入排序顺序为C++的数组中
- 如何将冒泡排序函数添加到当前随机数生成器
- 排序前显示的随机数
- 使用exec对发送给子节点的随机数进行排序