> Tous les forumsAutres langages

 Algorithme de tri
Statut du sujet : NON RESOLU Imprimer
 ms-dos
  Posté le 28/10/2007 @ 21:46  
 Petit astucien

55 Messages

Bonjour tout le monde.

J'essaie de trier un tableau avec un algo. J'ai trouver plusieurs méthode et ça fonctionne ! Houra !
Mais j'en viens au problème ! J'utilise celui là comme algo:

  1. for (i = 0 ; i < NB_NOMBRES ; i++)
    {
    for (j = 0 ; j < NB_NOMBRES ; j++)
    {
    if (nombre[i] < nombre[j])
    {
    temp = nombre[i];
    nombre[i] = nombre[j];
    nombre[j] = temp;
    }


Le problème c'est que je comprends vraiment rien , bon un petit peu . Est-ce que quelqu'un pourrait prendre le temps, svp, de me l'expliquer clairement avec des mots, exemples, phrases. N'importe l'important serait simplement que je comprenne. Merci à l'avance!

 Afficher le profil de ms-dosEnvoyer un message privé à ms-dos
 
 
Publicité
 fennec.  Posté le 29/10/2007 à 14:06  
Petit astucien

246 Messages
Bonjour, for (i = 0 ; i < NB_NOMBRES ; i++) { for (j = 1 ; j < NB_NOMBRES ; j++) { if (nombre[j] < nombre[i]) { temp = nombre[i]; nombre[i] = nombre[j]; nombre[j] = temp; } } } Petit changement ta deuxième boucle (j) doit commencé a 1 pour évité un test inutile si tu veu trié dans l'ordre croissant tu doi testé si ta deuxième valeurs est plus petite que la première if (nombre[j] < nombre[i]) => ordre croissant if (nombre[i] < nombre[j]) => ordre décroissant Dans For NB_NOMBRES correspond au nombre de cas de ton tableau Exemple : Tableau 5 cases 0 1 2 3 4 => case 4 3 2 1 0 => valeurs Ta première boucle concerne pour son premier tour la première valeur du tableau Nombre[i] = 4 Ta deuxième boucle concerne pour son premier tour la deuxième valeur du tableau Nombre [j] = 3 Au premier tour des deux boucle ton test va être if (3 < 4) => la condition est vrai Donc le code dans le if va être exécuté Première ligne du if : temp = nombre[i] => on stocke la valeur de nombre[i] dans une varible temporaire d’où son nom TEMP Deuxième ligne : on a fait un backup de nombre [i] dans temp donc on peut copier nombre [j] sur nombre [i] On se retrouve maintenant avec sa dans la tableau => 3 , 3 , 2 , 1 , 0 Nombre [j] = 3 de la case 1 Nombre [i] = 3 de la case 0 Temp = 4 Maintenant il suffi de copier la valeur de temp dans nombre[j] Troisième ligne => nombre[j] = temp ; Maintenant ton tableau resemble a sa => 3 , 4 , 2 , 1 , 0 Nombre[i] = 3 La deuxième boucle avance d’une case, donc Nombre[j] = 2 Test if (Nombre[j] < Nombre[i]) OUI le code du if est execute … Et ainsi de suite jusqu'à ce que les 2 boucles aie parcouru le tableau. Essaye de mètre des print avec les valeurs de tes variables pour mieux comprendre Le code
Afficher le profil de fennec.Envoyer un message privé à fennec.
 Revenir en haut de la page
 breizhbugs  Posté le 29/10/2007 à 18:20  
Astucien

3001 Messages
  1. for (i = 0 ; i < NB_NOMBRES-1 ; i++)
    {
    for (j = i+1 ; j < NB_NOMBRES ; j++)
    {
    if (nombre[i] < nombre[j])
    { //on echange nombre[i] et nombre[j]
    temp = nombre[i];
    nombre[i] = nombre[j];
    nombre[j] = temp;
    }

ca serais pas un tri plomb?

le but est ici de faire "tomber" le plus grand nombre au début du tableau dont la borne inférieure est délimité par "i".

Donc un fait un tri par ordre decroissant -> [ partie triée > nombre[i] | partie à trier ]



Modifié par breizhbugs le 29/10/2007 19:35
Afficher le profil de breizhbugs Voir la configuration de breizhbugsEnvoyer un message privé à breizhbugs
 Revenir en haut de la page
 fennec.  Posté le 30/10/2007 à 13:28  
Petit astucien

246 Messages
c'est un simple tri par ordre croissant ou décroissant selon le test
Afficher le profil de fennec.Envoyer un message privé à fennec.
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page