A voir également:
- [langage C] probleme sur les trie
- Langage ascii - Guide
- Trier sur excel - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Bns langage jeune - Forum Réseau
10 réponses
jamel_theone
Messages postés
61
Date d'inscription
dimanche 5 février 2006
Statut
Membre
Dernière intervention
1 décembre 2008
20
8 févr. 2006 à 15:47
8 févr. 2006 à 15:47
Si tu programmes en C ISO, les declarations de toutes tes variables locales doivent se faire au debut de la fonction.
Sinon petites remarques :
Dans ton "if" tu fais
mais je crois que ce qu'il faut faire c'est plutot
Si t'as un tableau de ce style :
ton programme ne triera pas correctement ;-)
Sinon petites remarques :
Dans ton "if" tu fais
temp=tab1[i]; tab1[i+1]=tab1[i]; tab1[i+1]=temp;
mais je crois que ce qu'il faut faire c'est plutot
temp=tab1[i]; tab1[i]=tab1[i+1]; tab1[i+1]=temp;
Si t'as un tableau de ce style :
int tab1[]={2,5,3,9,1};
ton programme ne triera pas correctement ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jamel_theone
Messages postés
61
Date d'inscription
dimanche 5 février 2006
Statut
Membre
Dernière intervention
1 décembre 2008
20
8 févr. 2006 à 16:24
8 févr. 2006 à 16:24
Ce que fais ton algo c'est parcourir UNE seule fois le tableau, quand le contenu de l'indice courante est superieur au contenu de l'indice qui suit, tu permutes...ok, mais si t'as un tableau qui a l'origine est comme ca :
à la sortie tu aura cela
et tu vois donc qu'il n'est pas correctement trié (tu peux faire la trace de ton algo à la main pour verifier)
Une solution consisterai à faire 2 boucles "for" imbriquées mais bon en terme de ce qu'on appelle "la compléxité" je trouve que ca fait trop...ca justifie le fait que l'on utilise d'autre algorithme de trie, dont la complexité est moindre (pour info, la compléxité permet grosso modo de savoir si un probleme peut etre résolu efficacement)
{2,5,3,9,1}
à la sortie tu aura cela
{2,3,5,1,9}
et tu vois donc qu'il n'est pas correctement trié (tu peux faire la trace de ton algo à la main pour verifier)
Une solution consisterai à faire 2 boucles "for" imbriquées mais bon en terme de ce qu'on appelle "la compléxité" je trouve que ca fait trop...ca justifie le fait que l'on utilise d'autre algorithme de trie, dont la complexité est moindre (pour info, la compléxité permet grosso modo de savoir si un probleme peut etre résolu efficacement)
mmh, arrêtez-moi si je me trompe, mais dans la ligne :
tu fais faire ta boucle de 0 à tab1[taille-1]-1. Or dans ton exemple, tab1[taille-1] = 9. Donc tu lui demande de lire jusqu'à la 9e case d'un tableau qui n'en contient que 4... je sais pas ce qu'il y a trouvé...
C'est pas plutôt
qu'il te faut?
for(i=0; i<tab1[taille-1]; i++)
tu fais faire ta boucle de 0 à tab1[taille-1]-1. Or dans ton exemple, tab1[taille-1] = 9. Donc tu lui demande de lire jusqu'à la 9e case d'un tableau qui n'en contient que 4... je sais pas ce qu'il y a trouvé...
C'est pas plutôt
for(i=0; i<taille; i++)
qu'il te faut?
si en effet c'est plus correct comme ça
for(i=0; i<taille; i++).
par contre tab1[taille-1] = n'est pas egal 9 case mais 4ème.
for(i=0; i<taille; i++).
par contre tab1[taille-1] = n'est pas egal 9 case mais 4ème.
Pas convaincue.. Quand tu appelles tab1[n], il t'affiche la valeur contenue dans la case n° n de ton tableau tab1 (cf http://chgi.developpez.com/pointeur/).
Rq : je te conseille ce site : www.developpez.com , il y a plein de tutoriels et des FAQ très bien faits, et le forum est fréquenté par des ingénieurs informaticiens et des étudiants en informatique très calés.
Rq : je te conseille ce site : www.developpez.com , il y a plein de tutoriels et des FAQ très bien faits, et le forum est fréquenté par des ingénieurs informaticiens et des étudiants en informatique très calés.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 avril 2007 à 13:50
9 avril 2007 à 13:50
Salut,
essaie plutôt
algo tri
Algorithme de tri
essaie plutôt
#include<stdio.h> #define TAILLE 4 int main () { int tab[] = { 2, 5, 3, 9 }; int i, k, temp; for (i = 0; i < TAILLE; i++){ k = i; while (k > 0 && tab[k] < tab[k - 1]){ temp = tab[k - 1]; tab[k - 1] = tab[k]; tab[k] = temp; --k; } } for (i = 0; i < TAILLE; i++) printf ("%d", tab[i]); printf("\n"); return 0; }Mais ça sera utilie de voir un peu
algo tri
Algorithme de tri