Le tri est l'un des problèmes qui ont été abordés maintes et maintes fois dans l'histoire de l'informatique. Il y a un excellent article Wikipédia avec un index et une comparaison de tonnes d'algorithmes de tri. Choisissez-en quelques-uns et découvrez comment ils fonctionnent! La rétro-ingénierie (en quelque sorte) des algorithmes est un excellent moyen d'améliorer vos propres compétences. Essayez par exemple le tri à bulles, le tri par insertion et le tri rapide. Acclamations! Je l'ai compris après quelques traces de pile avec un ami. Voici le code fixe: struct node *tmpPtr = head; struct node *tmpNxt = head->next; int tmp; while(tmpNxt! = tmpPtr){ if(tmpNxt->value < tmpPtr->value){ tmp = tmpPtr->value; tmpNxt->value = tmp;} Voici ma version du tri par liste chaînée à l'aide de l'algorithme de tri rapide. Tri par insertion algorithme. Vérifiez si cela aide.. #include "stdafx. h" #include "malloc. h" typedef struct node { struct node *next; int val;} node; bool insert_node(struct node **head, int val) { struct node *elem; elem = (struct node *)malloc(sizeof(struct node)); if (!
Ajout à la réponse de Rasmus Faber... Le tri dans LINQ, via Enumerable. OrderBy et, est une implémentation de tri stable, qui peut être utilisée comme alternative à. De la documentation Enumerable. OrderBy sur MSDN: Cette méthode effectue un tri stable; c'est-à-dire que si les clés de deux éléments sont égales, l'ordre des éléments est préservé. En revanche, un tri instable ne conserve pas l'ordre des éléments ayant la même clé. En outre, toute implémentation de tri instable, comme celle de, peut être stabilisée en utilisant la position des éléments de la séquence ou du tableau source comme une clé supplémentaire pour servir de bris d'égalité. Tri par liste chaînée en C - Ethic Web. Voici une telle implémentation, comme une méthode d'extension générique sur n'importe quel tableau unidimensionnel et qui transforme en un type stable: using System; using System. Collections. Generic; public static class ArrayExtensions { public static void StableSort < T >( this T [] values, Comparison < T > comparison) { var keys = new KeyValuePair < int, T >[ values.
Ca revient au même? On considère chaque élément et on modifie son pointeur afin de réordonner la totalité de la liste? 4 janv. 2008 à 09:57 Ou alors on considère chaque élément, on recherche sa place définitive dans la liste, on le supprime de son ancienne place et on insère un nouvel élément à la bonne place avec l'information de celui qu'on a supprimé? 4 janv. 2008 à 13:40 Nickel, ça marche! Merci beaucoup! C / C++ / C++.NET - Tri par insertion sur liste simplement chainée [Résolu]. mohboa 9 dimanche 2 mars 2008 25 novembre 2008 20 nov. 2008 à 01:59 j'ai l'algo de trie par insertion vous pouvez convertir en c ou c++ c'est facile voila mon programe: procedure triInsertion( t: tab en entrée sortie)Algorithme debut variable i, j, mem: entier pour i de 1 j N-1 faire /* sélection de l'élément à insérer*/ mem <- t[ i] j <- i tant que j>0 et t[j-1]>mem repeter /* décalage des éléments plus grands */ t[ j] <- t[ j-1] j <- j - 1 fin tant que t[ j] <- mem /* insertion */ fin pour; fin; merci