6月1日前解决问题
怎么分别生成元素升序、降序、随机序的3个数组,长度都为100万。这个怎么搞啊?还有接不上
下面是函数的接口 数组在前,长度在后
void SelectSort(int* num, int len)
6月1日前解决问题
怎么分别生成元素升序、降序、随机序的3个数组,长度都为100万。这个怎么搞啊?还有接不上
在每次生成随机数的时候,可以根据上一次的数据来决定下一次的范围,写了三个函数,一个生成递增数组,一个生成递减数组,一个生成随机数组:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXLEN 1000000
//生成递增数组
void createDzArray(int a[])
{
int i=0;
int start = 0; //从0开始
int end = 10;
for(i=0;i<MAXLEN;i++)
{
a[i] = start + rand()%(end-start); //生成[start,end)之间的随机数
start = a[i]+1; //调整start
end = start+10;
}
}
//生成递减数组
void createDjArray(int a[])
{
int i = 0;
int start = 90000000;
int end = start + 10;
for (i=0;i<MAXLEN;i++)
{
a[i] = start + rand()%(end-start); //生成[start,end)之间的随机数
end = a[i];
start = end - 10;
}
}
//生成随机数组
void createSjArray(int a[])
{
for(int i = 0;i<MAXLEN;i++)
a[i] = rand();
}
int main()
{
int a[MAXLEN],b[MAXLEN],c[MAXLEN];
srand((unsigned int)time(0)); //生成随机数种子
createDzArray(a); //生成递增数组
createDjArray(b); //生成递减数组
createSjArray(c); //生成随机数组
//显示数组,每行10个数据,以显示数组a为例
for(int i=0;i<MAXLEN;i++)
{
if((i+1)%10 == 0)
printf("%d\n",a[i]);
else
printf("%d ",a[i]);
}
//排序操作
return 0;
}