Recherche algo de tri de matrice - Algo - Programmation
Marsh Posté le 05-05-2004 à 15:57:48
Tu as de le droit de faire quelles opérations sur ta matrice? Permutation des lignes et colonnes? Ou bien alors tu peux carrément échanger des cases? Détaille un peu plus car c'est pas clair pour l'instant
Marsh Posté le 05-05-2004 à 16:00:02
y a pas de tri ... tu parcours chaque ligne et tu permuttes l'élément le plus grand avec l'élément diagonal
Marsh Posté le 05-05-2004 à 16:04:43
Et si les plus grandes valeurs de la matrice sont toutes sur la 1ere ligne?
Marsh Posté le 05-05-2004 à 16:06:57
Ace17 a écrit : Et si les plus grands valeurs de la matrice sont toutes sur la 1ere ligne? |
ah ok, j'avais pas compris ... ben alors je pense pas qu'il y ait grand chose à faire ... son tri j'y comprends rien ... y a qu'a trouver les plus grand éléments et remplir la diagonale ave ... sinon faut qu'il nous explique son tri ou les éléments seraient pas dans l'ordre ...
Marsh Posté le 05-05-2004 à 16:24:05
Matrice de départ :
1 8 9 |
Matrice Triée :
9 8 4 |
Tu veux trier comme ça ? (Comme indiqué dans la section "3c. Lecture Zigzag" http://www.tsi.enst.fr/tsi/enseign [...] peg.html).
Tu peux considerer ta matrice comme un tableau lineaire de largeur*hauteur cases.
Ensuite tu peux par exemple faire une fonction de conversion qui pour un indice entre 0 et le "nombre de case de ta matrice-1" te donne coordonnées x et y ou quelque chose dans le genre.
Et ensuite tu n'as plus qu'a trié ta matrice comme un simple tableau lineaire en passant par ta fonction qui gere les coordonnees reelles toute seule.
Le principe étant de séaprer tri et gestion des indices.
Bon courage.
Marsh Posté le 05-05-2004 à 16:44:46
en fait on ne peut changer que l'ordre des lignes et l'ordre des colonnes, on peu pas permutter des valeurs
en fait cette matrice représente les pourcentages de correspondance entre deux résultats,et le tri permettrait de voir rapidement quel colonne correspond avec quelle ligne
un exemple :
|
on souhaiterai :
|
les valeurs que l'on doit faire apparaitre en diagonale doive etre le maximum de leur ligne et de leur colonne,
si probleme se pose ensuite pour les colonnes vide par exemple :
|
qu'il faut ramener vers le bas.
je comprend que ca puisse paraitre obscur car moi meme je m'y pert
Marsh Posté le 05-05-2004 à 16:47:42
je pense comencer par trié mes colonnes par la somme des carées celle ci
Marsh Posté le 05-05-2004 à 16:47:58
ReplyMarsh Posté le 05-05-2004 à 22:51:42
EpoK a écrit :
|
Le 10 (en 3;3) il est pas le max de sa colonne la
Marsh Posté le 06-05-2004 à 11:01:00
en fait je cherche déja à trier les colonnes de mon tableau 2d en fonction des valeurs d'une ligne
et cela efficacement et proprment
Marsh Posté le 06-05-2004 à 19:43:54
Ca c'est simple :
Apres tu appliques un tri de ton choix sur la ligne que tu veux, sauf que tu répercutes au fur et a mesure du tri les permutations que tu fais sur toute la colonne.
Marsh Posté le 06-05-2004 à 19:46:19
Et si tu veux faire encore plus propre et plus rapide, au lieu de travailler directement sur ta matrice, tu travailles sur une liste de colonnes; typiquement un tableau de int dont chaque case indique quelle colonne se trouve ici.
Au début, ton tableau vaut donc :
0, 1, 2, ... n-1
Et au fur et a mesure que tu tries, tu permutes les éléments de ce tableau et non des colonnes entieres. A la fin, tu n'auras qu'a générer ta nouvelle matrice en collant les colonnes dans le bon ordre
Marsh Posté le 05-05-2004 à 15:28:14
Bonjour
j'ai une matrice (représentée par un double[][])
et je doit la trier pour qu'au final les plus grandes valeurs apparaisent en diagonale en partant de la case 0,0.
je cherche à savoir si vous connaitriez un bon algo qui fait ca.
pour l'instant j'ai tenté un truc des colonnes suivit d'un tri des lignes mais je m'y pert un peu avec tout les cas possible (sachant que ma matrice n'est pas forcement carré).
Si vous trouvez ça facile merci de ne pas se moquer j'ai du mal
je poste pas le code que j'ai déja fait car il complettement illisible, les indices parte dans tout les sens et c'est pas propre du tout.
je continue à chercher mais je voulai savoir si c'était un probleme connu et si des algos fiables existent.
Merci