Algoritma pengisihan rawak yang cekap untuk senarai integer C#
Artikel ini meneroka cara yang lebih cekap untuk mengisih atau merombak senarai integer secara rawak.
Algoritma Kocok Fisher-Yates
Algoritma shuffling Fisher-Yates ialah algoritma masa linear yang merawak senarai dengan cekap. Begini cara ia berfungsi:
Untuk setiap indeks i dalam senarai dari 0 hingga n-1, lakukan perkara berikut:
<code>int j = random.Next(i + 1); 交换索引i和j处的数值;</code>
Tingkatkan masalah sedia ada dalam algoritma
Algoritma yang dicadangkan mempunyai beberapa kelemahan:
Pelaksanaan kod
Coretan kod berikut melaksanakan algoritma shuffling Fisher-Yates dalam C#:
<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>
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengocok Senarai Integer dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!