今天去C语言贴吧里面看到一个人问这个问题,我就在这里把算法写了下来。
主要思路就是:
1.先生成1万个数字,保存在数组里面。
2.然后再打乱这1万个数字的排列顺序。
下面是全部测试代码:
1 #include <stdio.h> 2 #include <stdlib.h>//srand头文件 3 #include <time.h>//time头文件 4 5 int main() 6 { 7 srand(time(NULL)); 8 int array[10000]; 9 int temp, p1, p2, count = 0; 10 for (int i = 0; i < 10000; i++) 11 { 12 array[i] = i; 13 } 14 int num= rand() % 10000; 15 while (--num) //随机交换num个数字 16 { 17 p1 = rand() % 10000;//具体交换的数字 18 p2 = rand() % 10000;//同上 19 temp = array[p1]; 20 array[p1] = array[p2]; 21 array[p2] = temp; 22 } 23 for (int i = 0; i < 10000; i++) 24 { 25 printf("%d ",array[i]); 26 ++count; 27 if (0 == (count % 10))//输出10个换一行 28 { 29 printf("\n"); 30 } 31 } 32 }