Maison >développement back-end >C++ >Comment pouvons-nous mélanger efficacement une liste d'entiers en C# ?
Algorithme de tri aléatoire efficace pour la liste d'entiers C#
Cet article explore un moyen plus efficace de trier ou de mélanger aléatoirement une liste d'entiers.
Algorithme de brassage Fisher-Yates
L'algorithme de brassage de Fisher-Yates est un algorithme en temps linéaire qui randomise efficacement les listes. Voici comment cela fonctionne :
Pour chaque index i dans la liste de 0 à n-1, procédez comme suit :
<code>int j = random.Next(i + 1); 交换索引i和j处的数值;</code>
Améliorer les problèmes existants dans l'algorithme
L'algorithme proposé présente quelques lacunes :
Mise en œuvre du code
L'extrait de code suivant implémente l'algorithme de lecture aléatoire de Fisher-Yates en 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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!