Tri_matrice
Fermé
ouali
-
10 mars 2009 à 00:03
mamiemando Messages postés 33574 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mars 2025 - 12 mars 2009 à 00:49
mamiemando Messages postés 33574 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mars 2025 - 12 mars 2009 à 00:49
3 réponses
mamiemando
Messages postés
33574
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 mars 2025
7 833
10 mars 2009 à 00:24
10 mars 2009 à 00:24
Qu'appelles-tu "trier une matrice" ?
Que cherches tu as faire, peux-tu nous donner un exemple ?
Bonne chance
Que cherches tu as faire, peux-tu nous donner un exemple ?
Bonne chance
mamiemando
Messages postés
33574
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 mars 2025
7 833
11 mars 2009 à 18:44
11 mars 2009 à 18:44
Désolée mais je n'ai rien compris. Donne-moi un exemple de matrice en "version non triée" et en "version triée".
Bonne chance
Bonne chance
mamiemando
Messages postés
33574
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 mars 2025
7 833
12 mars 2009 à 00:49
12 mars 2009 à 00:49
Bon j'ai cru comprendre que tu avais résolu ton problème. Effectivement ça ne change rien ce n'est qu'un changement sur la manière d'organiser les données. Supposons que tu aies une matrice de N lignes et M colonnes et que tu indexes tes cases comme suit :
Alors la case i correspond à la ligne i/M (partie entière) et à la colonne i%M, où % désigne l'opérateur modulo. C'est par exemple cette transformation qui est montrée dans cet exemple :
qui donne à l'exécution :
Partant de là il est très simple d'adapter un algorithme capable de faire un tri sur un tableau unidimensionnel dont l'index varie dans {0 ...., N.M - 1} vers un algo de tri manipulant un tableau N* M.
Bonne chance
0 1 ... 1.M - 1 M M+1 ... 2.M - 1 ... (N-1)M ... N.M - 1
Alors la case i correspond à la ligne i/M (partie entière) et à la colonne i%M, où % désigne l'opérateur modulo. C'est par exemple cette transformation qui est montrée dans cet exemple :
#include <stdio.h> int main(){ int i; int L = 3; int C = 10; for(i=0;i<L*C;++i){ printf("(%d,%d) ",i/C,i%C); if(i%C == C - 1) printf("\n"); } return 0; }
qui donne à l'exécution :
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9) (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9) (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9)
Partant de là il est très simple d'adapter un algorithme capable de faire un tri sur un tableau unidimensionnel dont l'index varie dans {0 ...., N.M - 1} vers un algo de tri manipulant un tableau N* M.
Bonne chance
11 mars 2009 à 17:49