关于高德纳的洗牌算法# JobHunting - 待字闺中
j*l
1 楼
以下两种都可以么?为什么他老人家给出的是第一种,从后往前排?
void KnuthShuffle(int pArr[], int n)
{
int rand;
for (int i = n - 1; i >= 0; i--)
{
rand = GenRand(0, i); // including 0 and i
swap(pArr[i], pArr[rand]);
}
}
void KnuthShuffle(int pArr[], int n)
{
int rand;
for (int i = 0; i < n; i++)
{
rand = GenRand(i, n-1); // including i and n-1
swap(pArr[i], pArr[rand]);
}
}
void KnuthShuffle(int pArr[], int n)
{
int rand;
for (int i = n - 1; i >= 0; i--)
{
rand = GenRand(0, i); // including 0 and i
swap(pArr[i], pArr[rand]);
}
}
void KnuthShuffle(int pArr[], int n)
{
int rand;
for (int i = 0; i < n; i++)
{
rand = GenRand(i, n-1); // including i and n-1
swap(pArr[i], pArr[rand]);
}
}