随机排序
将数组中的各值随机排列的算法:
思路很简单:数组序号是唯一的。多次利用随机函数产生一定范围内的随机数。且与已产生的数不相等
程序也很简单:(以1-10为例,其他思路也一样)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 10
main()
{
int ary[SIZE],i=0,j,k;
time_t t;
srand((unsigned)time(&t)); //随机数的产生与系统时间有关
for(i=0;i<SIZE;i++) //产生随机序列
{
ary[i]=rand()%10+1; //产生的随机数会在1-10范围内
k=find(ary,i); //判断该数是否已经出现
if(k==1) i--;
}
for(j=0;j<SIZE;j++) //输出结果
printf("The uniform randrom number %d is %d\n",j+1,ary[j]);
getch();
}
int find(int b[],int i) //判断数值是否出现的函数
{
int j;
for(j=0;j<i;j++)
{
if(b[i]==b[j])
{
return 1;
}
}
return 0;
}