Tri shell

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
A voir également:

2 réponses

saradsaoudi
 
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;
}
}
}

                
2
blux Messages postés 27161 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Problème posé depuis plus de 3 ans...
De plus, tu ne fournis pas un algo, mais un programme en C...
0
Sonya
 
merci .. mais là j'ai déjà eu mon bac et sur le point d'avoir ma licence (je prépare mon PFE) :D
merci quand même ^_^
0
blux Messages postés 27161 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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 !
0
Zboubi
 
Je pense que le mec avait déja utilisé google...
0
blux Messages postés 27161 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Commentaire inutile posté 3 ans après...
0