Trier un tableau string avec QuickSort [Résolu]

spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 23 mars 2010 à 15:45 - Dernière réponse : spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention
- 25 mars 2010 à 15:43
Bonjour

J'ai un tableau de string ex:

02 aaaaaaa bbbbbbbbbbb 123456 123456 123456
04 ccccccc ddddddddddd 45632 25478 2365477

J'ai créé plusieurs méthodes afin d'extraire les différentes infos ex:

deuxiemeMot=tab [1].substring 3,7 ainsi de suite.....

Maintenant je dois écrire une class pour trier mon tableau avec QuickSort selon les informations extraite, sois selon la première chaine de chiffre ou première chaine de l'être etc. J'ai essayé plusieurs façon mais toujours sans succès.
Merci d'avance de vos réponse et ou suggestion
Afficher la suite 

4 réponses

Répondre au sujet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 24 mars 2010 à 18:35
+3
Utile
Comme dit précédemment, avec l'interface IComparer (voir le lien), tu peux définir toi-même à quelle(s) condition(s) un élément est inférieur ou supérieur à un autre.

Pour être précis, tu as même cette surcharge là de la méthode Sort qui est très simple : http://msdn.microsoft.com/fr-fr/library/cxt053xf.aspx

Tu as juste une méthode dont voici le prototype :
static int Comparaison(string a, string b);

Et dans cette méthode, tu testes tout ce que tu veux sur a et b (substring, convert, tolower... tout ce dont tu as besoin quoi) pour, au final, renvoyer -1 si tu considères que a < b, 0 si tu considères que a = b et 1 si tu considères que a > b.

Enfin, tu appelle la méthode Sort :
Array.Sort(monTableau, Comparaison);

Et là, monTableau sera trié.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 24 mars 2010 à 17:29
0
Utile
La méthode Sort() utilise l'algo QuickSort.
En revanche, il faudra que tu implémentes une méthode pour comparer 2 entrées de ton tableau.
Dans cette méthode, tu devras faire des test avec les substrings afin de renvoyer -1 0 ou 1 selon que la première entrée est < = ou > à la deuxième entrée.

Exemple : http://msdn.microsoft.com/fr-fr/library/aw9s5t8f.aspx

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog
spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 24 mars 2010 à 17:57
0
Utile
Merci pour ta réponse Krimog, une fois ma nouvel méthode crée (qui compareras ci le substring est plus petit ou plus grand) comment je vais afficher le tableau en entier trier ? Je suis capable de faire un trie avec un champ précis et d'afficher seulement cette colonne mais je dois trier le tableau en entier par un des substrings et ensuite afficher l'ensemble du tableau.
Commenter la réponse de spmsbl
spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 25 mars 2010 à 15:43
0
Utile
Merci Krimog !, je vais ajouter cette méthode à mon programme
Commenter la réponse de spmsbl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.