Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5} devienne
{5,4,3,2,1,0}.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5} devienne
{5,4,3,2,1,0}.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5} devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
\ tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; \ tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; \ tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; \ tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
ça c'est fort ! tu gagnes la taille d'une case du tableau en mémoire et tu
perds beaucoup plus en temps de calcul.
(casséé !)
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
\ tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; \ tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; \ tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; \ tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
ça c'est fort ! tu gagnes la taille d'une case du tableau en mémoire et tu
perds beaucoup plus en temps de calcul.
(casséé !)
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
ça c'est fort ! tu gagnes la taille d'une case du tableau en mémoire et tu
perds beaucoup plus en temps de calcul.
(casséé !)
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage C
puisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:D
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
\ tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; \ tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; \ tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; \ tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" <dinh.viet.hoa@free.fr> wrote in message
news:etPan.3f9fe650.1fd47cd4.235d@homer...
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed
je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?
je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?
je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur cela
ne
sert à rien.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilementpour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de
temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur cela
ne
sert à rien.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$626a54ce@news.free.fr...
je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage C
puisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:D
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
\ tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; \ tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; \ tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; \ tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" <dinh.viet.hoa@free.fr> wrote in message
news:etPan.3f9fe650.1fd47cd4.235d@homer...
Je recherche une methode "optimisee" (minimum de memoire et de
temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur cela
ne
sert à rien.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau. Après, tu peux effectivement faire cela sur place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilementpour des entiers marche pour des blocs memoire de quelques centaines de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de
temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n étant
la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Je ne comprends pas ce que tu entends par "reverse iterateur".
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne
se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur
cela
nesert à rien.
mouais ...
Il ne faut pas oublier que parfois le programme n'est pas destine a
tourner
sur des pc ... et que dans certains de ces memes cas la vitesse importe
peu
mais la memoire oui.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Je ne comprends pas ce que tu entends par "reverse iterateur".
Sauf qu'il s'agit d'un tableau a deux dimension et que je veux faire
inverser ses lignes
Rappel :Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
thx--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement
Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
lataille du tableau. Après, tu peux effectivement faire cela sur
place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant
la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilementpour des entiers marche pour des blocs memoire de quelques centaines
de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de
temps)d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours
d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
lataille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage
C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,c'est un problème de capillarité palmaire" -- ed
Je ne comprends pas ce que tu entends par "reverse iterateur".
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne
se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur
cela
ne
sert à rien.
mouais ...
Il ne faut pas oublier que parfois le programme n'est pas destine a
tourner
sur des pc ... et que dans certains de ces memes cas la vitesse importe
peu
mais la memoire oui.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Je ne comprends pas ce que tu entends par "reverse iterateur".
Sauf qu'il s'agit d'un tableau a deux dimension et que je veux faire
inverser ses lignes
Rappel :
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
thx
--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement
Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$626a54ce@news.free.fr...
je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
la
taille du tableau. Après, tu peux effectivement faire cela sur
place,
genre (en langage C
puisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:D
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant
la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
\ tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; \ tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; \ tab[i] = a+b
tab[n -
i - 1]=a
tab[i] -= tab[n - i - 1]; \ tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilement
pour des entiers marche pour des blocs memoire de quelques centaines
de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,
mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" <dinh.viet.hoa@free.fr> wrote in message
news:etPan.3f9fe650.1fd47cd4.235d@homer...
Je recherche une methode "optimisee" (minimum de memoire et de
temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours
d'algoje
crois
mais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne
{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
la
taille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage
C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,
c'est un problème de capillarité palmaire" -- ed
Je ne comprends pas ce que tu entends par "reverse iterateur".
Tout ça c'est du pipo. L'optimisation pour des choses aussi basiques ne
se
fait pas en C mais avec l'optimiseur donc sans info sur l'optimiseur
cela
nesert à rien.
mouais ...
Il ne faut pas oublier que parfois le programme n'est pas destine a
tourner
sur des pc ... et que dans certains de ces memes cas la vitesse importe
peu
mais la memoire oui.
Si c'est une question d'algorithme, utilise un reverse itérateur et tu
n'aura pas à copier ton tableau.
Je ne comprends pas ce que tu entends par "reverse iterateur".
Sauf qu'il s'agit d'un tableau a deux dimension et que je veux faire
inverser ses lignes
Rappel :Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne {5,4,3,2,1,0}.
thx--
Paul Bacelar
Développeur, Consultant, Expert en technologie de développement
Microsoft.
Recherchant poste CDI/CDD/FREELANCE pour Janvier 2004.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3f9fec70$0$2790$je crois que c'est une question sur de l'algorithmique et non sur du
C.
il existe un NG d'algorithmique en francais ?Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
lataille du tableau. Après, tu peux effectivement faire cela sur
place,
genre (en langage Cpuisqu'on est sur le groupe) :
Et puisque C est mon langage préféré...:Dfor(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
Si tu veux optimiser, deja tu peux echanger les cases en economisant
la
variable temp:
for(i = 0 ; i < n / 2 ; i ++) {
tab[i]=a tab[n - i - 1]=b
tab[i] += tab[n - i - 1]; tab[i] = a+b
tab[n - i - 1]=b
tab[n - i - 1] = tab[i] - tab[n - i - 1]; tab[i] = a+b
tab[n -i - 1]=a
tab[i] -= tab[n - i - 1]; tab[i] = b
tab[n - i - 1]=a
}
Le probleme c'est que je ne suis pas sur que ce qui marche aussi
facilementpour des entiers marche pour des blocs memoire de quelques centaines
de
bytes. Ou alors, au lieu de faire une addition j'utilise le AND bit a
bit,mais au niveau du temps d'execution j'ai des doutes ...
"DINH Viêt Hoà" wrote in message
news:Je recherche une methode "optimisee" (minimum de memoire et de
temps)d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours
d'algoje
croismais ca fait un petit bout de temps maintenant.
Pour simplifier cela revient a ce ke mon tableau = {0,1,2,3,4,5}
devienne{5,4,3,2,1,0}.
je crois que c'est une question sur de l'algorithmique et non sur du
C.
Enfin bon, je crois qu'il n'y a qu'une seule méthode en O(n), n
étant
lataille du tableau.
après, tu peux effectivement faire cela sur place, genre (en langage
C
puisqu'on est sur le groupe) :
for(i = 0 ; i < n / 2 ; i ++) {
void * tmp;
tmp = tab[i];
tab[i] = tab[n - i - 1];
tab[n - i - 1] = tmp;
}
après, appeler cela de l'optimisation, je trouve ça un peu gros.
--
DINH V. Hoa,
"écrire 'dsl' au lieu de 'désolé', c'est pas un problème
d'orthographe,c'est un problème de capillarité palmaire" -- ed
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
Je recherche une methode "optimisee" (minimum de memoire et de temps)
d'inversion d'un tableau. J'avoue j'ai deja vu ca en cours d'algoje crois
mais ca fait un petit bout de temps maintenant.
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?
je crois que c'est une question sur de l'algorithmique et non sur du C.
il existe un NG d'algorithmique en francais ?