10功能之数组元素的打乱(洗牌算法)
1 理论思想
每轮随机选一个数放在第一位,确定的数不再处理,共处理n-1次。
2 代码
void Swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}
void Random_Elem(int *arr, int len) {
srand(time(NULL));
for (int i = 0; i < len - 1; i++) { //共随机放n-1次 ,最好i=1 下面不用写得那么麻烦
int rd = rand() % (len - i - 1) + (i + 1); //每次排除自己随机挑选一个数
Swap(arr[i], arr[rd]);
}
}