Réorganisation efficace de listes d'entiers en C#
Pour un brassage (randomisation) optimal d'une liste d'entiers en C#, un algorithme très efficace est essentiel pour minimiser le temps de traitement. L'algorithme de lecture aléatoire de Fisher-Yates fournit une solution en temps linéaire, surpassant considérablement les méthodes qui recherchent de manière répétée des éléments non mélangés. Ces méthodes moins efficaces deviennent progressivement plus lentes à mesure que la taille de la liste augmente.
Un problème courant avec les approches de brassage inefficaces est le potentiel de boucles infinies, en particulier avec les listes contenant un nombre impair d'éléments.
L'algorithme de lecture aléatoire de Fisher-Yates
Le mélange Fisher-Yates sélectionne de manière itérative un élément aléatoire dans la partie non mélangée de la liste et l'échange avec un élément de la section déjà mélangée. Cela garantit que chaque élément a une chance égale d'apparaître dans n'importe quelle position dans la liste finale mélangée.
Voici une implémentation C# du shuffle Fisher-Yates :
<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>
Cette mise en œuvre affinée offre plusieurs avantages :
Cela fait de la lecture aléatoire Fisher-Yates la méthode préférée pour une lecture efficace des listes d'entiers en C#.
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!