C# 中的高效整數列表改組
為了在 C# 中實現整數列表的最佳洗牌(隨機化),高效的演算法對於最小化處理時間至關重要。 Fisher-Yates 洗牌演算法提供了線性時間解決方案,其效能明顯優於重複搜尋未洗牌元素的方法。 隨著清單大小的增加,這些效率較低的方法會變得越來越慢。
低效洗牌方法的常見問題是可能出現無限循環,尤其是包含奇數個元素的清單。
Fisher-Yates 洗牌演算法
Fisher-Yates 洗牌迭代地從清單的未洗牌部分中選擇一個隨機元素,並將其與已洗牌部分中的元素交換。 這保證了每個元素都有相同的機會出現在最終打亂清單中的任何位置。
這是 Fisher-Yates shuffle 的 C# 實作:
<code class="language-csharp">private static void FisherYatesShuffle(int[] values) { Random random = new Random(); for (int i = values.Length - 1; i > 0; i--) { int swapIndex = random.Next(i + 1); int temp = values[i]; values[i] = values[swapIndex]; values[swapIndex] = temp; } }</code>
這種精細的實作有以下幾個優點:
這使得 Fisher-Yates 洗牌成為 C# 中高效整數列表洗牌的首選方法。
以上是如何優化 C# 中的整數列表改組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!