使用自己构造的函数来根据每次的位置信息返回乱序的数字
/* * * 程序功能:对指定的数组,进行随机排序,交换数组中的数据位置 */ #include <stdio.h> #include <math.h> void swap(int *tempa,int *tempb); void main() { int a[10]={0,1,2,3,4,5,6,7,8,9}; int i; int j=0; for(i=0;i<10;i++)//可修改i<5,对一半乱序交换即可 { j=(int)(pow(i,2)+5*i)%10;//可以自己构造一个其他的函数,保证与10求余后不与原位置相同即可 swap(&a[i],&a[j]); } for(i=0;i<10;i++) printf("a[%d] is %d\n",i,a[i]); } void swap(int *tempa,int *tempb) { int temp; temp=*tempa; *tempa=*tempb; *tempb=temp; }排序结果:
a[0] is 5 a[1] is 6 a[2] is 4 a[3] is 2 a[4] is 8 a[5] is 0 a[6] is 9 a[7] is 1 a[8] is 7 a[9] is 3
使用时间随机函数来返回乱序的数字
/* * * 程序功能:对指定的数组,进行随机排序,交换数组中的数据位置 */ #include <stdio.h> #include <time.h> void swap(int *tempa,int *tempb); void main() { int a[10]={0,1,2,3,4,5,6,7,8,9}; int i; int j=0; srand((unsigned int)time(NULL)); for(i=0;i<10;i++)//可修改i<5,对一半乱序交换即可 { j=rand()%10; swap(&a[i],&a[j]); } for(i=0;i<10;i++) printf("a[%d] is %d\n",i,a[i]); } void swap(int *tempa,int *tempb) { int temp; temp=*tempa; *tempa=*tempb; *tempb=temp; }
排序结果:
a[0] is 3 a[1] is 2 a[2] is 5 a[3] is 0 a[4] is 1 a[5] is 6 a[6] is 8 a[7] is 7 a[8] is 4 a[9] is 9