Accueil > Forum > > > > algorithme de tri
algorithme de tri
lundi 8 juin 2009 à 11:40:26 |
algorithme de tri

chegue02
|
Bonjour, svp vous pouvez mé corrigé ce code concernant l'algorithme de tri merci d'avance #include<stdio.h> #include<conio.h> // fonction qui permet de trier tab en utilisant la methode de tri a bulle int tri_bulle ( int tab[], int n) { int ok=0; for (int i=0;(i<n)&&ok==0;i++) {ok=1; for (int j=0;j<n;j++) { if(tab[j]>tab[j+1]) { int permuter (tab [j],tab[j+1]) tmp =tab[j+1]; tab[j+1]=tab [j]; tab[j]=tmp; ok=0; } } } } // fonction qui permet de trier tab en utilisant la methode de tri par insertion void Tri_inser(int tab[],int n) { for(int i=1;i<n;i++) { for(int j=0;j<i;j++) if(tab[i]<tab[j]) { int tmp=tab[i]; for(int k=i;k>=j;k--) tab[k]=tab[k-1]; tab[j]=tmp; } } } // fonction qui permet de trier tab en utilisant la methode de tri sélection du minimum /void Tri_select(int tab[],int n) { for (int i=0;i<n-1;i++) { int m=i; for( int j=i+1; j<n ; j++) if(tab[j] >tab[m]) m=j; int tmp=tab[i]; tab[i]=tab[m]; tab[m]=tmp; } } // fonction qui permet de trier tab en utilisant la methode de tri par permutation void Tri_permut( int tab[]) { int i,j,tmp; for (i=n-1; i>0; i--) { for (j=n-1; j>=0; j--) { if ( tab[i]<tab[j]) tmp=tab[i]; tab[i]=tab[j]; tab[j]=tmp; } } // } // fonction qui permet de trier tab en utilisant la methode de tri rapide /int partition (int tab[], int inf, int sup) { int piv=tab[(inf+sup/2)]; int i=inf; int j=sup; while(i<j) { while(piv>tab[j]) j--; while(piv<tab[i]) i++; if(i<j) { int tmp=tab[i]; tab[i]=tab[j]; tab[j]=tmp; } } return j; } tri rapide(int tab[],int inf, int sup) { if(n>1) { int piv=partition(tab,inf,sup); tri rapide (tab,inf,piv-1à; tri rapide (tab,piv+1,sup); } // } // fonction qui permet de trier tab en utilisant la methode de tri fusion void fusion (int tab[30],int A[10],int B[20],int a,int b) { int i,j,k=0; for(i=0;j=0;(i<a)&&(j<b);k++) {if(A[i]<B[j]) {tab[k]=A[i]; i++; } else { tab[k]=B[j]; j++; }} while (i<a) {tab[k]=A[i]; k++; } i++; while (i<b) {tab[k]=B[j]; k++; } j++; } diviser (int tab,n,t1,n2,t2) {int j,i; n1=n/2; n2=n-n1; for(i=0;i<n1;i++) t1[i]=tab[i]; for(j=0;i=n+1;(j<n2)&&(i<n);i++;j++) t2[j]=tab[i]; } void tri_fusion(int tab[],int n) { if(n>1) { n=n/2; division (tab,n,t1,n1,t2); tri fusion (t1,n1); tri fusion (t2,n2); fusion (tab,n,t1,n1,t2); } } // Programme principale int main() { int n,t[30],t1[30],t2[30]; printf(" entrer la dimension n "); scanf("%d",&n); for(int i=0;i<n;i++) { printf(" entrer l element %d ",i+1); scanf("%d",&t[i]); } printf(" \n Affichage de T avant le triage : \n "); for(int i=0;i<n;i++) printf(" %5d ",t[i]); getch(); return 0; }
|
|
mardi 9 juin 2009 à 18:38:47 |
Re : algorithme de tri

rt15
|
Bienvenue,
En indentant comme ça, tu dois en baver avec les accolades.
Correction, en indentant comme ça, tu en baves avec les accolades, et ça se voit.
Un code pas indenté perd, je sais pas, 30 ou 40% de lisibilité. INDENTE !
conio.h si c'est juste pour faire une pause, autant s'en passer, pas standard.
Les déclaration de variables au milieu du code c'est vrai que tu as le droit sur du C "récent", mais en général c'est déconseillé.
Les commentaires //, pareil, ça ne respècte pas les vieux standard -> /* ... */. Mais bon c'est pareil t'es pas obligé.
Essaie de compiler avec les warnings : gcc -Wall test.c -o test.exe
Ca permet de trouver un paquet de problèmes.
Il y a des trucs qui ressemble à rien, par exemple un caractère à qui traine à la place d'une parenthèse... Des slashs on sait pas ce qu'il fait là -> /void Tri_select. Des noms de fonction avec des espaces... Ce code ne compilait pas quand tu l'as posté. La moindre des choses aurait été qu'il soit en mesure de compiler. La fonction diviser qui est appelée division ailleurs dans le code.
Quand on veut faire une boucle for avec plusieurs instructions dans l'initialisation et le bouclage, il faut utiliser des , pas des ; -> for ( i = 5, j = 10 ; i + j < 20; i++, j++ )
Quand tu code, compile tout le temps. Il faut pas tout coder puis tout tester. Il faut faire un bout de code, tester, et ainsi de suite. Et fallait surtout pas essayer de faire toutes les procédures de tri avant d'en avoir au moins une qui marche.
Entrer les valeurs à la main à chaque fois, c'est chiant. Autant initialiser des tableaux dans le code, avec rand : http://www.cplusplus.com/reference/clibrary/cstdlib/rand/ Et une fois que tu as une fonction de tri qui marche, tu peux t'en servir pour vérifier le résultat des autres fonctions avec du code.
Le code des tris n'est jamais appelé. A se demander pourquoi tu l'as écrit. Pourquoi serait-ce à nous de l'écrire.
Voilà le code qui compile. Et qui fait n'importe quoi. Bon courage pour la suite. Et souviens toi -> RIGUEUR.
Tu aurais poster un code comme ça, j'aurais pu plus t'aider, mais là j'ai consommé le temps que je t'avais imparti.
#include<stdio.h>
/* * fonction qui permet de trier tab en utilisant la methode de tri a bulle */ void tri_bulle (int tab[], int n) { int ok; int tmp; int i; int j;
ok = 0; for (i = 0; (i < n) && (ok == 0); i++) { ok = 1; for (j = 0; j < n; j++) { if (tab[j] > tab[j + 1]) { tmp = tab[j + 1]; tab[j + 1] = tab [j]; tab[j] = tmp; ok = 0; } } } }
/* * fonction qui permet de trier tab en utilisant la methode de tri par insertion */ void Tri_inser(int tab[], int n) { int tmp; int i, j, k; for (i = 1; i < n; i++) { for (j = 0; j < i; j++) if (tab[i] < tab[j]) { tmp = tab[i]; for(k = i; k >= j; k--) tab[k] = tab[k - 1]; tab[j]=tmp; } } }
/* * fonction qui permet de trier tab en utilisant la methode de tri sélection du minimum */ void Tri_select(int tab[], int n) { int tmp; int m; int i, j;
for (i = 0; i < n - 1; i++) { m = i; for (j = i + 1; j < n; j++) if (tab[j] > tab[m]) m = j; tmp = tab[i]; tab[i] = tab[m]; tab[m] = tmp; } }
/* * fonction qui permet de trier tab en utilisant la methode de tri par permutation */ void Tri_permut(int tab[]) { int n; int tmp; int i, j;
for (i = n - 1; i > 0; i--) { for (j = n - 1; j >= 0; j--) { if (tab[i] < tab[j]) { tmp=tab[i]; tab[i]=tab[j]; tab[j]=tmp; } } } }
/* * fonction qui permet de trier tab en utilisant la methode de tri rapide */ int partition (int tab[], int inf, int sup) { int piv; int tmp; int i, j;
piv = tab[inf + sup / 2]; i = inf; j = sup;
while (i < j) { while (piv > tab[j]) j--; while(piv < tab[i]) i++; if(i < j) { tmp = tab[i]; tab[i] = tab[j]; tab[j] = tmp; } } return j; }
void tri_rapide(int tab[], int inf, int sup) { int n; int piv;
n = 12; /* Pour compiler... */ if (n > 1) { piv = partition(tab, inf, sup); tri_rapide(tab, inf, piv - 1); tri_rapide(tab, piv + 1, sup); } }
/* * fonction qui permet de trier tab en utilisant la methode de tri fusion */ void fusion (int tab[], int A[],int B[],int a, int b) { int i, j, k;
k = 0; j = 0; for (i = 0; (i < a) && (j < b); k++) { if (A[i] < B[j]) { tab[k] = A[i]; i++; } else { tab[k] = B[j]; j++; } } while (i < a) { tab[k] = A[i]; k++; } i++; while (i < b) { tab[k] = B[j]; k++; } j++; }
void diviser(int tab[], int n, int t1[], int t2[], int n1, int n2) { int j, i;
n1 = n / 2; n2 = n - n1;
for (i = 0; i < n1; i++) t1[i] = tab[i]; j = 0; i = n +1; while ((j < n2) && (i < n)) { t2[j] = tab[i]; i++; j++; } }
void tri_fusion(int tab[], int n) { int t1[30]; int t2[30]; int n1; int n2;
/* Pour la compile... */ n1 = 12; n2 = 12;
if (n > 1) { n = n / 2; diviser(tab, n, t1, t2, n1, n2); tri_fusion (t1, n1); tri_fusion (t2, n2); fusion(tab, t1, t2, n1, n2); } }
/* * Programme principale */ int main() { int n; int t[30]; int i;
printf(" entrer la dimension n "); scanf("%d", &n); for (i = 0; i < n; i++) { printf(" entrer l element %d ", i + 1); scanf("%d", &t[i]); }
printf(" \n Affichage de T avant le triage : \n "); for(i = 0; i < n; i++) printf(" %5d ", t[i]);
return 0; }
|
|
Cette discussion est classée dans : int, tri, tab, for, tmp
Répondre à ce message
Sujets en rapport avec ce message
help une fonction qui a besoin de vous [ par natacha86 ]
Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell
pb en c urgenttttttttttttttttt [ par natacha86 ]
bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as
encore un pb en c svp....... [ par natacha86 ]
j'ai essayer de séparer les fonctions mais ca ne marche pas...#include #include #include #include #include #define MAX 1000000
tableau [ par imanedaoudi ]
Salut,Je veux récuperer le tableaux triée sans faire return, avec ce programme je recupere le tableau non trier ,comment faire pour recuperer le tab t
Help! Pb de spécif en C [ par tomalille ]
Bonjour, je suis en train d'écrire un programme et je voudrai faire une fonction qui renvoit un tableau d'entier.Je n'arrive pas à faire la spécif.Vou
problème avec des listes > 30 éléments [ par tomalille ]
Bonjour,je finalise un programme qui fonctionne parfaitement sauf que je ne peux pas travailler avec une liste de plus de 30 éléments pour le tri par
compilation mai au lancement "erreur la memoire ne peu pas pas etre read" [ par touny23 ]
je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre .j arrive a compiler sous dev-cpp mai lo
Besoin d'aide urgent SVP [ par paulina82 ]
Bonjour, j'ai un gros probleme avec mon programme ecri en langage C.lorsque je complile il n'afiche pa d'erreur mais lorsque j'esaye de l'executé il
Problem Affichage de mon Tableau [ par Orezza ]
salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le
pb avec fonctions sqrt de math.h [ par fox88 ]
voici mon code : void histod::calcul_moyenne_ecartype(){ //CALCUL MOYENNE DU NB D'APPELS MOYEN JOURNALIER unsigned long accu=0; int moyenne=0;<br
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|