如何用C++编写一个随机产生0~9999的一万个整数,并且从小到大排序!

谢谢了啊!
2024-12-14 09:05:50
推荐回答(3个)
回答1:

本程序基于计数排序.

#include
#include
#include
using namespace std;

void main()
{
int a[10000];//最终数组
int cnt[10000];//计数排序辅助数组
int temp;//获取随机数
int i,j;//循环变量
int t=0;//a数组下标计数
memset(cnt,0,10000*sizeof(int));
srand(unsigned int(time(0)));
for(i=0;i<10000;i++)
{
temp=rand()%10000;
cnt[temp]++;
}
for(i=0;i<10000;i++)
{
for(j=0;j {
a[t++]=i;
}
}

}

回答2:

#include
#include
using namespace std;

#define N 10000
unsigned long rand32( void );

void main(void)
{
int i,j,a[N]={0},t;
bool b;
srand( (unsigned) (time(NULL)) );//初始化随机数种子
for(i=0;i {//产生随机数
do
{
t=rand32()%N;
b=true;
for(j=0;j {
if(t==a[j])
{
b=false;//判断这个数是否已经存在
break;//如果存在,重新生成一个
}
}
}
while(!b);Q
a[i]=t;
}

//排序
for(i=0;i for(j=i+1;i {
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

unsigned long rand32( void )
{
return ( (rand() << 17) + (rand() << 2) + rand() % 4);
}

回答3:

二楼方法不对吧

for(i=0;i<10000;i++)
{
temp=rand()%10000;
cnt[temp]++;
}

假设temp每次随机到的数不同
那么cnt数组里所有值都是1了