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}.
A dire vrai je vais effectuer cette operation sur des blocs memoires mais
comme ca revient au meme ....
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du temps. Il vaut mieux l'inverser une bonne fois pour toutes. Mais venant d'un "Expert en technologie de développement Microsoft" on peut s'attendre à tout...
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du
temps. Il vaut mieux l'inverser une bonne fois pour toutes.
Mais venant d'un "Expert en technologie de développement Microsoft" on peut
s'attendre à tout...
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du temps. Il vaut mieux l'inverser une bonne fois pour toutes. Mais venant d'un "Expert en technologie de développement Microsoft" on peut s'attendre à tout...
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du temps. Il vaut mieux l'inverser une bonne fois pour toutes. Mais venant d'un "Expert en technologie de développement Microsoft" on peut s'attendre à tout...
heu ... ouais, enfin qu'il soit dans un sens ou dans l'autre, le temps d'accès est approximativement le même.
-- 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
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du
temps. Il vaut mieux l'inverser une bonne fois pour toutes.
Mais venant d'un "Expert en technologie de développement Microsoft" on peut
s'attendre à tout...
heu ... ouais, enfin qu'il soit dans un sens ou dans l'autre, le temps
d'accès est approximativement le même.
--
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
Dans ce cas c'est ridicule. A chaque accès au tableau inversé, on perd du temps. Il vaut mieux l'inverser une bonne fois pour toutes. Mais venant d'un "Expert en technologie de développement Microsoft" on peut s'attendre à tout...
heu ... ouais, enfin qu'il soit dans un sens ou dans l'autre, le temps d'accès est approximativement le même.
-- 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
Bertrand Mollinier Toublet
Marc a ecrit
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
A quoi Emmanuel Delehaye a repondu: T'aurais pas plutôt une question sur le langage C?
A quoi Marc a repondu:
Il est pas clair que je veux le realiser en C ?
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel. (et aussi, tu ne respectes pas les conventions de publication sur Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il faut comprendre que ta question n'est pas sur le *langage* C, mais sur un algorithme (en l'occurence). Ici, on voudrait plutot discuter du *langage* C, et non de ses applications.
Donc meme s'il est clair que tu veux realiser ton algo en C, ca ne rend pas ta question plus dans le sujet. Quand tu auras ecrit un bout de code pour resoudre ton probleme, et que tu as des problemes lies au langage sur le bout de code, alors tu seras le bienvenu pour poser tes questions.
-- Bertrand Mollinier Toublet - Le top-posting. - Quelle est la pratique la plus chiante sur Usenet ?
Marc a ecrit
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
A quoi Emmanuel Delehaye a repondu:
T'aurais pas plutôt une question sur le langage C?
A quoi Marc a repondu:
Il est pas clair que je veux le realiser en C ?
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel.
(et aussi, tu ne respectes pas les conventions de publication sur
Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il
faut comprendre que ta question n'est pas sur le *langage* C, mais sur
un algorithme (en l'occurence). Ici, on voudrait plutot discuter du
*langage* C, et non de ses applications.
Donc meme s'il est clair que tu veux realiser ton algo en C, ca ne rend
pas ta question plus dans le sujet. Quand tu auras ecrit un bout de code
pour resoudre ton probleme, et que tu as des problemes lies au langage
sur le bout de code, alors tu seras le bienvenu pour poser tes questions.
--
Bertrand Mollinier Toublet
- Le top-posting.
- Quelle est la pratique la plus chiante sur Usenet ?
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
A quoi Emmanuel Delehaye a repondu: T'aurais pas plutôt une question sur le langage C?
A quoi Marc a repondu:
Il est pas clair que je veux le realiser en C ?
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel. (et aussi, tu ne respectes pas les conventions de publication sur Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il faut comprendre que ta question n'est pas sur le *langage* C, mais sur un algorithme (en l'occurence). Ici, on voudrait plutot discuter du *langage* C, et non de ses applications.
Donc meme s'il est clair que tu veux realiser ton algo en C, ca ne rend pas ta question plus dans le sujet. Quand tu auras ecrit un bout de code pour resoudre ton probleme, et que tu as des problemes lies au langage sur le bout de code, alors tu seras le bienvenu pour poser tes questions.
-- Bertrand Mollinier Toublet - Le top-posting. - Quelle est la pratique la plus chiante sur Usenet ?
DINH Viêt Hoà
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel. (et aussi, tu ne respectes pas les conventions de publication sur Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il faut comprendre que ta question n'est pas sur le *langage* C, mais sur un algorithme (en l'occurence). Ici, on voudrait plutot discuter du *langage* C, et non de ses applications.
Ah si, de temps de temps, il s'agit de ses applications mais il s'agit plutôt de la façon d'agencer un code, le style et il faut éviter les questions de ce style qui peuvent se résoudre dans n'importe quel langage. Bref, tout le monde est d'accord qu'il s'agit d'une question d'algorithmique.
-- 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
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel.
(et aussi, tu ne respectes pas les conventions de publication sur
Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il
faut comprendre que ta question n'est pas sur le *langage* C, mais sur
un algorithme (en l'occurence). Ici, on voudrait plutot discuter du
*langage* C, et non de ses applications.
Ah si, de temps de temps, il s'agit de ses applications mais il s'agit
plutôt de la façon d'agencer un code, le style et il faut éviter les
questions de ce style qui peuvent se résoudre dans n'importe quel langage.
Bref, tout le monde est d'accord qu'il s'agit d'une question
d'algorithmique.
--
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
Marc, t'es tombe dans le panneau de la question rhetorique d'Emmanuel. (et aussi, tu ne respectes pas les conventions de publication sur Usenet, ce qui est tres agacant, cf ma signature...). Bien entendu, il faut comprendre que ta question n'est pas sur le *langage* C, mais sur un algorithme (en l'occurence). Ici, on voudrait plutot discuter du *langage* C, et non de ses applications.
Ah si, de temps de temps, il s'agit de ses applications mais il s'agit plutôt de la façon d'agencer un code, le style et il faut éviter les questions de ce style qui peuvent se résoudre dans n'importe quel langage. Bref, tout le monde est d'accord qu'il s'agit d'une question d'algorithmique.
-- 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
Marc Boyer
DINH Viêt Hoà wrote:
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;
J'ai raté une subtilité là. C'est quoi ce void* ? C'était pas un tableau d'entier ?
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.
Disons que j'ai du mal à voir comment optimiser le renversement d'un tableau. On a un algo trivial en O(N), et je vois mal comment arriver à moins. Si on veut faire de la micro optimisation (éviter l'addition implicite dans tab[i] et le cacul 'n-i'), on doit pouvoir faire:
int tmp; for(deb=tab, end=tab+n;deb<tab;deb++, tab--){ tmp=*deb; *deb=*end; *end=tmp; } Mais je suis même pas sur qu'on gagne quoi que ce soit de mesurable.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
DINH Viêt Hoà wrote:
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;
J'ai raté une subtilité là. C'est quoi ce void* ?
C'était pas un tableau d'entier ?
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.
Disons que j'ai du mal à voir comment optimiser le renversement
d'un tableau. On a un algo trivial en O(N), et je vois mal comment
arriver à moins.
Si on veut faire de la micro optimisation (éviter l'addition
implicite dans tab[i] et le cacul 'n-i'), on doit pouvoir
faire:
int tmp;
for(deb=tab, end=tab+n;deb<tab;deb++, tab--){
tmp=*deb;
*deb=*end;
*end=tmp;
}
Mais je suis même pas sur qu'on gagne quoi que ce soit de mesurable.
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
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;
J'ai raté une subtilité là. C'est quoi ce void* ? C'était pas un tableau d'entier ?
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.
Disons que j'ai du mal à voir comment optimiser le renversement d'un tableau. On a un algo trivial en O(N), et je vois mal comment arriver à moins. Si on veut faire de la micro optimisation (éviter l'addition implicite dans tab[i] et le cacul 'n-i'), on doit pouvoir faire:
int tmp; for(deb=tab, end=tab+n;deb<tab;deb++, tab--){ tmp=*deb; *deb=*end; *end=tmp; } Mais je suis même pas sur qu'on gagne quoi que ce soit de mesurable.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Marc Boyer
Marc wrote:
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 }
Va falloir que tu expliques sur quelle machine réelle l'économie d'une variable de type entier permet de considérer que l'ajout de 3 opérations arithmétiques entières par itération de boucle constitue une optimisation.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Marc wrote:
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
}
Va falloir que tu expliques sur quelle machine réelle
l'économie d'une variable de type entier permet de considérer
que l'ajout de 3 opérations arithmétiques entières par itération
de boucle constitue une optimisation.
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
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 }
Va falloir que tu expliques sur quelle machine réelle l'économie d'une variable de type entier permet de considérer que l'ajout de 3 opérations arithmétiques entières par itération de boucle constitue une optimisation.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(