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中文網其他相關文章!