× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Algorithme de tri
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
ms-dos
  Posté le 28/10/2007 @ 21:46 
Aller en bas de la page 
Petit astucien

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!



Modifié par ms-dos le 28/10/2007 22:03
Publicité
fennec.
 Posté le 29/10/2007 à 14:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
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
breizhbugs
 Posté le 29/10/2007 à 18:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
  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
fennec.
 Posté le 30/10/2007 à 13:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
c'est un simple tri par ordre croissant ou décroissant selon le test
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
94,57 €SSD Kingston A400 960Go à 94,57 € livré
Valable jusqu'au 14 Juillet

Amazon Italie fait une promotion sur le SSD Kingston A400 960 Go qui passe à 89,99 € (avec la TVA ajustée). Comptez 4,58 € pour la livraison en France soit un total de 94,57 € livré alors qu'on le trouve autour de 110 € ailleurs. Il offre des débits de 450 Mo/s en écriture et 500 Mo/s en lecture. 


> Voir l'offre
28,90 €Microsoft Office 2019 Professional Plus à 28,90 €
Valable jusqu'au 16 Juillet

Le vendeur sérieux Digital FR propose sur Amazon la clé d'activation légale pour Microsoft Office Professionnel 2019 Plus en français à 28,90 €. Cette clé livrée par email vous permettra d'activer Microsoft Office Professionnel 2019 Plus légalement et vous permettra ainsi d'utiliser autant de temps que vous voulez (il s'agit de la version complète et pas d'un abonnement) Word,Excel, PowerPoint, OneNote, Outlook, Publisher et Access 2019 sur un PC. La clé sera à activer sur Office.com où vous pourrez ensuite télécharger toute la suite bureautique. Pour mémoire, Microsoft Office Professionnel 2019 nécessite Windows 10. Sous Windows 7 ou 8, vous devrez vous tourner vers la version 2016. Pour plus d'info sur la procédure, n'hésitez pas à jeter un oeil à notre dossier pratique Acheter une clé OEM d'Office 2019 et l'installer.


> Voir l'offre
56,49 €Switch Netgear Gigabit GS305P 5 ports avec 4 ports PoE à 56,49 €
Valable jusqu'au 16 Juillet

Amazon fait une promotion sur le switch Netgear GS305P 5 ports 10/100/1000 qui passe à 56,49 € livré gratuitement. On le trouve habituellement à plus de 70 €. 4 ports PoE 55W permettent de connecter et d’alimenter directement des périphériques comme des caméras IP, des téléphones IP et des points d’accès Wifi.


> Voir l'offre

Sujets relatifs
Algorithme machine a monnaie sur autoroute
Algorithme
Problème java (algorithme vers java)
Algorithme de chiffrement c++
Algorithme
Algorithme de little problème du voyageur de comme
cour pro du c++ & algorithme ........
 > Tous les forums > Forum Autres langages