Tri shell
sonya
-
Sonya -
Sonya -
Bonjour,
pouvez vous m'expliquer le principe du tri shell,et sa méthode de résolution car j'ai un BAC informatique (language imposé est le pascal)que je prépare et ce point m'est encore flou.merci d'avance
pouvez vous m'expliquer le principe du tri shell,et sa méthode de résolution car j'ai un BAC informatique (language imposé est le pascal)que je prépare et ce point m'est encore flou.merci d'avance
Configuration: Windows XP Internet Explorer 7.0
2 réponses
-
bonsoir
j'aimerais vous informer que le principe du tri Shell consiste à comparer dés le départ des éléments éloignés entre eux, pour diminuer les désordres dans le tableau . On facilite ainsi la tache pour les balayages ultérieurs . La différence entre les éléments comparés diminue au fur et à mesure jusqu'à la phase finale qui constitue le raffinage du tableau;
et concernant sa résolution je vous propose cet algorithme dont j'espère qu'il va vous aider
void triShell(int tableau[], const int longueur)
{
int pas, i, j, memoire;
pas = 0;
// Calcul du pas
while(pas<longueur)
{
pas = 3*pas+1;
}
while(n!=0) // tant que le pas est > 0
{
pas = pas/3;
for(i=n; i<longueur; i++)
{
memoire = tableau[i]; // valeur à décaler éventuellement
j = i;
while((j>(pas-1)) && (tableau[j-pas]>memoire))
{ // échange des valeurs
tableau[j] = tableau[j-pas];
j = j-pas;
}
tableau[j] = memoire;
}
}
} -
Salut,
un bon début ici :
https://fr.wikipedia.org/wiki/Tri_de_Shell
et ici :
http://www.dailly.info/algorithmes-de-tri/shell.php
Merci google !