bonjour a tous, je suis etudiant en première année d'informatique et j'ai un dns a faire sur le tri shell qui consiste a prendre les valeurs comprise dans un vecteur pour ensuite les ranger en ordre croisant.Meme si je comprend les grands principes du tri j'ai de la misere a comprendre l'algo alors aidé de notre ami google j'ai tout de meme reussi a mettre au point le prog sans vraiment le comprendre d'ou mon probleme...

si quelqu'un pouvait m'expliquer en détail le fonctionnement de l'algo je lui en serait trés reconnaissant merci bien

voici mon codage :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
//---------------------------------------------------------------
 
#pragma hdrstop
 
#include "UntTri.h"
 
//---------------------------------------------------------------
 
#pragma package(smart_init)
 
Methode_tri_shell :: Methode_tri_shell(){
}
void Methode_tri_shell :: Lancer_tri_shell(int prmVectM[], int prmNbM){
  int pas = 0,
           j = 0,
    valeur = 0;  //Création et initialisation des variables
 
        do{              //Calcul du premier pas
        pas=3*pas+1 ;     // valeur du pas pour lequel son efficacité est optimal
        }while(pas<prmNbM);  
 
        while(pas!=0)    //Tant que le pas est plus grand ou égal à 1
        {
                for (int i(pas);i<prmNbM;i++)  // On parcourt la liste
                {
                        valeur=prmVectM[i] ;
                        j=i ;
 
                        while((j>(pas-1)) && (prmVectM[j-pas]>valeur)) 
                        {
                                prmVectM[j]=prmVectM[j-pas];
                                j=j-pas ;
                        }
                        prmVectM[j]=valeur ;
                }
                pas=(pas-1)/3 ;  //On décrémente le pas
        }
}

ps: jspere que le code est lisible la mise en page n'est pas terrible mais jai pas réussi a faire mieux dsl

(note du modo: utilises les balises CODE, c-a-d l'icone # dans la barre d'outils de l'éditeur de message)