Trier plusieur tableau [Résolu]

Signaler
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
-
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
-
Bonjour

je dois trier plusieur tableau a partir d'un seul. Exemple j'ai un tableau int , un tableau double et un char, je dois les trier par ordre croissant du premier tableau mais j'ai aucune idées comment faire. Merci d'avance de votre aide !

a[] int {5,2,4,1,3}
b[] double {2.0,3.0,4.0,5.0,1.0}
c[] char {c,e,a,b,d}

je dois avoir

a[] int {1,2,3,4,5}
b[] double {5.0,3.0,1.0,4.0,2.0}
c[] char {b,e,d,a,c}

5 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Salut

Il suffit de faire un tri sur le premier tableau et d'effectuer les mêmes opérations sur les autres tableaux.

Par exemple, avec un simple tri bulle (rappelons que c'est loin d'être l'algo le plus rapide, car de complexité O(n²)) :

do
{
    bool enDesordre = false;
    for (int j = 0; j < a.Length - 1; j++)
    {
        if(a[j] > a[j + 1])
        {
            int iTemp = a[j];
            a[j] = a[j + 1];
            a[j + 1] = iTemp;
            double dTemp = b[j];
            b[j] = b[j + 1];
            b[j + 1] = dTemp;
            char cTemp = c[j];
            c[j] = c[j + 1];
            c[j + 1] = cTemp;
            enDesordre = true;
        }
    }
} while(enDesordre);


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013

Merci beaucoup pour ta réponse Krimog ! you're the best !!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Pourquoi ne pas utiliser la méthode Sort 'toute faite' qui utilise probablement un quicksort? [O(n log(n))] ????


[hr]
-Site personnel-
-Blog-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
@Bidou : Le problème est qu'il faut effectuer les mêmes opérations sur plusieurs listes (ou tableaux). Je ne vois pas comment faire excepté en créant une liste d'objets ayant 3 valeurs et en redéfinissant la méthode de comparaison.
C'est sûr que ce serait plus efficace, mais mon exemple n'est justement qu'un exemple. Je ne cherchais pas le plus rapide, mais juste le plus simple.

PS : Oui, je confirme que la méthode Sort utilise l'algo quicksort

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013

Merci Bidou pour ta suggestion,
mais j'ai déjà appliquer cette façon de faire a mon programme et ca marche bien, par contre j'ai enlever condition booléenne et j'ai fais l`appel de la méthode en récursivité à la fin.
Merci encore !