Tri de tableaux avec mémorisation des indices
Bonjour,
J'ai un tableau (Array) qui contient les éléments suivants :
Code:
1 2 3 4 5
| tabD[0]=340;
tabD[1]=111;
tabD[2]=481;
tabD[3]=480;
tabD[4]=111; |
Je duplique ce tableau dans un autre Array qui s'appelle tabF et j'utilise la fonction sort pour trier mon tableau:
Je récupère donc en sortie les valeurs suivantes :
Code:
1 2 3 4 5
| tabF[0]=111;
tabF[1]=111;
tabF[2]=340;
tabF[3]=480;
tabF[4]=481; |
Je souhaiterai pouvoir mémoriser le changement d'indice qui s'est effectué, j'effectue donc la boucle suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
tab_indices = new Array();
k=0;
while(k!=nb_notices+1){ //nb_notices correspond à la longueur de mes tableaux
j=0;
while(j!=nb_notices+1){
if(tabF[j]==tabD[k]){
//Si on trouve un élément qui est le même dans les tableaux tabD et tabF on mémorise l'indice
tab_indices[j] = k;
alert("tab_indices[j] = "+tab_indices[j]+" k = "+k+" j = "+j);
}
j=j+1;
}
k=k+1;
} |
NB : J'utilise le Javascript dans des conditions un peu spéciales, je ne peux pas utiliser de boucles for (à cause du symbole "<" ou ">"), j'utilise donc des boucles while (je sais que ça fait pas très "pro" :oops:).
Je ne peux pas utiliser non plus le PHP. Il me faut une solution 100% Javascript.
Après ce traitement, j'obtiens le résultat suivant (grâce à l'alert que j'ai placé):
Code:
1 2 3 4 5 6 7
| tab-indices[j] = 0 , k=0 , j=2
tab-indices[j] = 1 , k=1 , j=0
tab-indices[j] = 1 , k=1 , j=1
tab-indices[j] = 2 , k=2 , j=4
tab-indices[j] = 3 , k=3 , j=3
tab-indices[j] = 4 , k=4 , j=0
tab-indices[j] = 4 , k=4 , j=1 |
Comme tabD[1] et tabD[4] ont la même valeur, j'obtiens une fois que le traitement est fini :
tab-indices[0] = 4 et tab-indices[1] = 4 alors que je devrais avoir :
tab-indices[0] = 1 et tab-indices[1] = 4 (ou inversement, peu m'importe)
Mais toutes les valeurs de tab-indices doivent être différentes.
En fait, je dois mémoriser ces changements d'indices car j'ai une trentaine d'autres tableaux (Array) à mettre à jour selon le tri qui a été effectué.
Mon problème paraît simple au premier abord, mais je ne vois pas trop comment avoir une solution. Je ne connais pas à priori le nombre d'élément qui seront en double, triple ou même quadruple dans mon tableau. Et mon tri marche nickel si il n'y a pas de doubles dans le tableau...
Toute aide est la bienvenue !