TRI PAR INSERTION AVEC SENTINELLE

Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 janvier 2011 - 2 nov. 2009 à 11:24
Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 janvier 2011 - 2 nov. 2009 à 11:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37794-tri-par-insertion-avec-sentinelle

Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 janvier 2011
2 nov. 2009 à 11:24
Bonjour AlexN,

J'avoue que je n'est pas lancé ton code.

Par contre tout ce qui est de la forme i+1, j= j-1 etc... utilise les opérateur "++" et "--" niveau rapidité c'est les meilleurs ;)

Donc toi tu as:
// Tri
int aux;
for ( i = 1; i <= DIM - 1; i++ ) {
aux = t [i + 1];
t[0] = aux; // sentinelle
j = i;
while (t[j] > aux) { t[j+1] = t[j]; j = j - 1; }
t[j+1] = aux;
}

Moi j'aurais plutôt:
// Tri
int aux;
for ( i = 1; i <= DIM - 1; i++ ) {
aux = t [i++];
t[0] = aux; // sentinelle
j = i;
while (t[j] > aux) { t[j+1] = t[j]; j--; }
t[j++] = aux;
}

ces opérateurs sont implémenté de façon à que le processeur face les calcules beaucoup plus rapidement que avec des i+1, ou i = i +1...

d'ailleur sache que tu peut utiliser aussi ++i ou --i, mais attention le sens est différent de i++ ou i--.

je dis ça peut être tu le sais déjà mais je trouve qu'il vaut mieux optimiser au maximum son code ;) (celà deviens très nécessiteux quand on a de longue boucle.

Autrement ton code manque de beaucoup de commentaires, ce qui pourrais faciliter la lecture de celui-ci. et d'expliquer pourquoi pas ce qu'est une sentinelle pour ceux qui ne savent pas. (comme moi par exemple lol ^^)

Je te fais aucunes reproches ce ne sont que des avis personnel ;)

Cordialement,
Masterweb.
Rejoignez-nous