Bonjour
Je souhaiterais optimiser mon code .
Un petit exemple :
J ai le tableau X[] {3,9,2}
Apres le tir j obtiens 2,3,9
Mon objectif est de faire la difference entre la position initale de 3 et sa nouvelle position,(0-1 = 1) idem avec les autres valeurs de mon tableau
Pour y parvenir, actuellement je cree un tableau initial, un tableau target qui me servira à trier et remplacer les valeurs et un tableau posi qui me servira à comparer les positions initiales et trier.
A l issue je boucle sur l index que je compare à la vealeur de Posi[index]....
C est lent et peut certainement etre optimisé par le tri d un tableau à 2 dimensions ? Qu en pensez vous ?
Merci pour votre aide, commentaires etc
stéphane
mon code :
Je souhaiterais optimiser mon code .
Un petit exemple :
J ai le tableau X[] {3,9,2}
Apres le tir j obtiens 2,3,9
Mon objectif est de faire la difference entre la position initale de 3 et sa nouvelle position,(0-1 = 1) idem avec les autres valeurs de mon tableau
Pour y parvenir, actuellement je cree un tableau initial, un tableau target qui me servira à trier et remplacer les valeurs et un tableau posi qui me servira à comparer les positions initiales et trier.
A l issue je boucle sur l index que je compare à la vealeur de Posi[index]....
C est lent et peut certainement etre optimisé par le tri d un tableau à 2 dimensions ? Qu en pensez vous ?
Merci pour votre aide, commentaires etc
stéphane
mon code :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
int T = 30;
Double[] X = { 44.3, 21.3, 31.4, 8.7, 12.8, 45.0, 88.1, 32.0, 53.2, 30.3, 95.8, 50.4, 71.6, 26.7, 3.8, 36, 46, 34.3, 77.2, 55.3, 64.2, 85.5, 18.6, 50.9, 93.6, 26.8, 59, 99.1, 57, 78.1 };
double[] target= new double [T];
int[] posi= new int[T];
for (int Idx = 0; Idx < T; Idx++)
{
target[Idx] = X[Idx];
posi[Idx] = Idx;
}
//---Tri
for (int k = 0; k < T; k++)
{
for (int i = k+1; i < T; i++)
{
if (target[i] < target[k])
{
double tmp = target[k];
target[k] = target[i];
target[i] = tmp;
int tmp2 = posi[k];
posi[k] = posi[i];
posi[i] = tmp2;
}
}
}
int Diff;
int D_t=0;
for (int i = 0; i < T; i++)
{
Diff = posi[i] - i;
Diff = Diff * Diff;
D_t = D_t + Diff;
}
Aucun commentaire:
Enregistrer un commentaire