C#整数列表的高效随机排序算法
本文探讨一种更高效的随机排序或洗牌整数列表的方法。
Fisher-Yates洗牌算法
Fisher-Yates洗牌算法是一种线性时间算法,可以高效地随机化列表。其工作原理如下:
对于列表中从0到n-1的每个索引i,执行以下操作:
<code>int j = random.Next(i + 1); 交换索引i和j处的数值;</code>
改进算法中存在的问题
所提出的算法存在一些缺点:
代码实现
以下代码片段在C#中实现了Fisher-Yates洗牌算法:
<code class="language-csharp">using System; using System.Collections.Generic; class Program { static void Shuffle<T>(IList<T> list) { Random random = new Random(); for (int i = 0; i < list.Count; i++) { int j = random.Next(i + 1); T temp = list[i]; list[i] = list[j]; list[j] = temp; } } static void Main(string[] args) { List<int> values = new List<int>(); for (int i = 0; i < 10; i++) { values.Add(i); } Shuffle(values); Console.WriteLine(string.Join(", ", values)); } }</code>
以上是我们如何在 C# 中有效地打乱整数列表?的详细内容。更多信息请关注PHP中文网其他相关文章!