Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3062 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Tri par insertion simple & pointeurs

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Tri par insertion simple & pointeurs

n°1257326
geforce_11
Il dit qu'il a plus de genou!
Posté le 02-12-2005 à 11:00:39  profilanswer
 

Bonjour à tous !
 
il m'a été donné un exercice à faire en C :  
traduire l'algo de tri par insertion simple en C avec et sans pointeurs, la version sans pointeurs marche tres bien, par contre j'ai un probleme pour celle avec les pointeurs :
 
Version sans pointeurs :  

Code :
  1. j=0;
  2.     x=0;
  3.    
  4.     while(j<nbel)
  5.     {
  6.         tmp=vec[j];
  7.         x=j-1;
  8.        
  9.         while(x>=0 && vec[x]>tmp)
  10.         {
  11.             vec[x+1]=vec[x];
  12.             x--;
  13.         }
  14.         vec[x+1]=tmp;
  15.         j++;
  16.     }


 
Version avec pointeurs  

Code :
  1. j=0;
  2.     x=0;
  3.     pvec=&vec[0];
  4.     pdeb=&vec[0];
  5.     while(j<nbel)
  6.     {
  7.         tmp=*pvec;
  8.         x=j-1;
  9.        
  10.         while(x>=0 && *(pdeb+x)>tmp)
  11.         {
  12.             *(pdeb+x+1)=*(pdeb+x);
  13.             x--;
  14.         }
  15.         *(pdeb+x+1)=tmp;
  16.        
  17.         *pvec++;
  18.         j++;
  19.     }


 
J'aimerai donc ne plus utiliser que le pointeur *pvec, meme si la version ci dessus fonctionne mais à mon avis il y a  moyen de faire mieux, et la je cale.
 
Merci de votre aide

mood
Publicité
Posté le 02-12-2005 à 11:00:39  profilanswer
 

n°1257425
db__
spécialiste de l'à peu près
Posté le 02-12-2005 à 12:42:27  profilanswer
 

Bonjour
je propose ceci (non testé)
j = 1;   /* le passage a 0 n'a aucun intéret */
while (j < nbel)
{
    pvec = vec + j;
    pdeb = pvec - 1;
    tmp = *pvec;
    while ((pvec != vec) && (*pdeb > tmp))
        *pvec-- = *pdeb--;
    *pvec = tmp;
    j++;
}
à tester

n°1257463
geforce_11
Il dit qu'il a plus de genou!
Posté le 02-12-2005 à 13:43:09  profilanswer
 

En effet ton algo marche très bien, j ai du juste le modifier tres legerement pour qu'il entre en adéquation avec les consignes.
 
merci

n°1257642
db__
spécialiste de l'à peu près
Posté le 02-12-2005 à 16:24:09  profilanswer
 

Le plus important est surtout de comprendre comment fonctionne les pointeurs.
ligne pvec != vec à comprendre
ligne *pvec-- = *pdeb-- à comprendre


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Tri par insertion simple & pointeurs

 

Sujets relatifs
Comment déclarer proprement des pointeursTri a bulle en VB
Conflit entre simple clic et double clic[Resolu] Insertion de mots contenant une quote dans un varchar
RESOLU insertion de l'année N-1 à concaténer avec un motLe double espace ne s'affiche que en simple espace
insertion de pages Wordsimple requete insert... ????
[resolu] DOM (XML) : insertion d'un élément avant un autreerreur insertion gros bloc de texte dans mySQL
Plus de sujets relatifs à : [C] Tri par insertion simple & pointeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR