首頁 > 後端開發 > C++ > 如何優化 C# 中的整數列表改組?

如何優化 C# 中的整數列表改組?

Susan Sarandon
發布: 2025-01-21 13:56:09
原創
859 人瀏覽過

How Can I Optimize Integer List Shuffling in C#?

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>
登入後複製

這種精細的實作有以下幾個優點:

  • 線性時間複雜度(O(n)):它只對列表執行一次遍歷,無論列表大小如何,都保持恆定的時間效率。
  • 處理所有列表大小:它可以正確地打亂任意長度的列表,消除無限循環的風險。

這使得 Fisher-Yates 洗牌成為 C# 中高效整數列表洗牌的首選方法。

以上是如何優化 C# 中的整數列表改組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板