打乱数组
代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void disorganise(int a[], int len);
void exchange(int* a, int* b);
int main(void)
{
int a[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,};
int len = ( sizeof(a) / sizeof(a[0]) );
disorganise(a, len);
for (int i = 0; i < len; i++) {
printf("%d:\t%d\n", i, a[i]);
}
return 0;
}
void disorganise(int a[], int len)
{
srand( time(NULL) );
int rN1 = (rand() % len);
int rN2 = (rand() % len);
for (int i = 0; i < 20; i++) {
if (rN1 != rN2) {
exchange(&a[rN1], &a[rN2]);
}
rN1 = (rand() % len);
rN2 = (rand() % len);
}
}
void exchange(int* a, int* b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
输出样例
0: 7
1: 12
2: 5
3: 4
4: 2
5: 8
6: 6
7: 3
8: 10
9: 11
10: 9
11: 13
12: 1
输出结果随机