[R] Trier un tableau suivant DES colonnes

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

[R] Trier un tableau suivant DES colonnes

#1

Message par Sepular »

Bonjour,

Je cherche a trier un tableau qui possède une multitude de ligne et de colonne.
Je souhaiterais le trier dans l'ordre croissant suivant plusieurs colonnes.
En faite j'aimerais donner une "importance", un "poids" ou un "coefficient" à certaine colonne lors du tri.
Il faudrait que le tableau se trie suivant la seconde colonne mais aussi suivant la troisième et la quatrième pour au final avoir la meilleur combinaison possible de ces dites colonnes.

En espérant avoir été clair, je reste pendu à vos réflexions ( solutions ) et vous apporterais les précisions que vous jugerais nécessaire.

Cordialement.
Modifié en dernier par Sepular le lun. 11 janv. 2021 14:55, modifié 1 fois.
Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#2

Message par Sepular »

ReBonjour,

Je n'ai pas encore essayé mais cela peut t'il fonctionner ?

Code : Tout sélectionner

_ArraySort($avArray, 0, 1, 1, 1)
Si cela fonctionne ce serais parfait mais je ne peut pas donner plus d'importance a la colonne 2 par rapport a la colonne 3
:arrow: Juste une petite réflexion au passage
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#3

Message par TommyDDR »

"cela peut t'il fonctionner ?" Pourquoi ne pas tester vous même et constater le résultat ? ^^

Non, ça ne fonctionnera pas, les paramètres que vous modifiez indiquent quelles lignes doivent être trié (vous triez moins de lignes en les utilisant), vous devez les laisser à 0.
Seul le dernier paramètre que vous utilisez indique sur quelle colonne trier.
Essayez d'enchainer les _ArraySort($avArray, 0, 0, 0, x) dans l'ordre inverse de l'importance de vos colonnes, suivant la façon de trier de _ArraySort, cela amenera surement au résultat voulu.
_ArraySort($avArray, 0, 0, 0, 3)
_ArraySort($avArray, 0, 0, 0, 2)
_ArraySort($avArray, 0, 0, 0, 1)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#4

Message par Sepular »

ReBonjour,

Pas le temps d'essayer ce weekend je taf malheureusement mais on s'en petarade les pied, ceci n'étant pas le propos.

Alors oui je dirais que votre astuce pourrais fonctionner mais comme dis précédemment, il faut que j'essaie :D

Je repasserais cette semaine pour le retour de la petite astuce et merci.
Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#5

Message par Sepular »

ReBonjoir,

Bon mon soucis me travail au travail lol.

l'idée de trier d'abord sur la colonne la moin importante puis le refaire sur les suivante plus importante semble bonne. Mais je pense que le résultat reviendra exactement au même si je ne le faisait que sur la plus importante, car les tri successif auparavant n'apporte rien sur le dernier tri.

Je le testerais mais je pense que c illusoire.

enfaite je souhaite la meilleur combinaison possible entre les 3 colonnes et ceux même si le tri sur une des colonnes les plus importantes ne rapporte pas le plus gros ''score'' sur cette dernière.

j'ai l'impression de parler chinois a un suédois. Me comprenez vous ou je m'explique mal ?

EDIT :

Je vais faire au plus simple je pense.
je vais ajouter une colonne qui sera la moyenne des autres avec un coefficient différent appliqué sur ces dernières puis trier sur cette colonne de moyenne.
Je pense que la combinaison qui en ressortira sera celle que souhaite.
Merci lautoreflexion et la simplicité.
Je vous tiens au courant, maintenant jai hâte de tester mais il faut bien travailler, :wink:
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#6

Message par jchd »

L'idée de tris successifs ne peut fonctionner que si l'algorithme de tri est stable, une qualité non garantie par les algorithmes employés par les fonctions de tri de tableau standard proposées par AutoIt.
De plus, une telle implémentation ne permet aucune pondération.

En conséquence, soit on emploie un tri de type quicksort C, qui permet de spécifier une fonction de collation ad-hoc, soit on ajoute en effet une colonne portant le résultat de la pondération souhaitée.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#7

Message par Nine »

Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#8

Message par Sepular »

ReBonjour,

Hummmm ça me semble bien compliqué a souhait ça, a étudier.
Je n'ai eu le temps que de faire des tests rapides avec ma solution qui semble prometteur.
Par contre je vais mettre dans mes cartons votre solution qui me ferais une corde en plus a l'éventail de ma programmation.

Merci pour la réponse et je redis quoi dans la semaine.

Edit : Le lien semble intéressant également
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes

#9

Message par Nine »

En regardant de plus près dans l'exemple présenté, il y a plus de lignes de commentaire que de lignes de code...Pas très compliqué en fait !
Sepular
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 28 mai 2011 20:20
Status : Hors ligne

Re: [..] Trier un tableau suivant DES colonnes  

#10

Message par Sepular »

ReBonjour,

[@TommyDDR] Votre solution ne fait pas du tout ce que je souhaite au final

[@jchd] Votre solution n'est pas en Autoit ? Je n'ai fait aucune recherche sur votre solution puisque au final vous êtes d'accord avec ma solution ;)

[@Nine] Votre solution ne conserve pas du tout l'intégrité des lignes (a première vu, je n'ai pas étudié la question plus que ça)

La solution trouvé est d'ajouter une colonne qui a pour valeur le résultat de la moyenne pondérer souhaité.

Je vous remercie tous :wink:
Répondre