【发布时间】:2010-09-27 09:11:38
【问题描述】:
我需要以最有效的方式随机“排序”整数列表 (0-1999)。有什么想法吗?
目前,我正在做这样的事情:
bool[] bIndexSet = new bool[iItemCount];
for (int iCurIndex = 0; iCurIndex < iItemCount; iCurIndex++)
{
int iSwapIndex = random.Next(iItemCount);
if (!bIndexSet[iSwapIndex] && iSwapIndex != iCurIndex)
{
int iTemp = values[iSwapIndex];
values[iSwapIndex] = values[iCurIndex];
values[iCurIndex] = values[iSwapIndex];
bIndexSet[iCurIndex] = true;
bIndexSet[iSwapIndex] = true;
}
}
【问题讨论】:
-
请注意,您创建了一个 iTemp 变量,但不要使用它。这当然会引起问题。
-
啊,是的。我的意思是分配值[iCurIndex] = iTemp.
-
更好的说法可能是“创建整数列表的随机排列的最有效方法”