gpt4 book ai didi

c# - 在 C# 中随机 "sort"(Shuffle) 整数列表的最有效方法

转载 作者:IT王子 更新时间:2023-10-29 03:49:18 24 4
gpt4 key购买 nike

我需要以最有效的方式对整数列表 (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;
}
}

最佳答案

一个好的线性时间混洗算法是 Fisher-Yates shuffle .

您会发现您提出的算法存在的一个问题是,当您接近洗牌结束时,您的循环将花费大量时间来寻找尚未交换的随机选择的元素。一旦到达要交换的最后一个元素,这可能需要一段不确定的时间。

此外,如果要排序的元素数量为奇数,您的算法似乎永远不会终止。

关于c# - 在 C# 中随机 "sort"(Shuffle) 整数列表的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/375351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com