Tri d'entier dans l'ordre croissant (trishell)

0/5 (4 avis)

Snippet vu 7 127 fois - Téléchargée 32 fois

Contenu du snippet

Fonction de tri d'un tableau d'entier par ordre croissant. Utile pour l'algorithmie. Le tri est rapide, il se base sur l'algorithme le plus courament utilisé pour un TriShell.

Source / Exemple :


#include <stdio.h>

void trishell(int *p, int N)
{
    int ecart, i, j, tmp;
    for(ecart = N/2; ecart > 0; ecart /= 2)
        for(i = ecart; i < N; i++)
            for(j = i-ecart; (j >= 0) && ( *(p+j) > *(p+(j+ecart)) ); j -= ecart)
            {
                tmp = *(p+j);

  • (p+j) = *(p+(j+ecart));
  • (p+(j+ecart)) = tmp;
} return; } int main() { int nb[128], N, i; scanf("%d", &N); printf("---------\n"); for(i = 0; i < N; i++) scanf("%d", &(nb[i])); printf("---------\n"); trishell(nb, N); for(i = 0; i < N; i++) printf("%d\n", nb[i]); printf("---------\n"); //system("pause"); return 0; }

Conclusion :


Petite démo d'utilisation de la fonction dans main()

A voir également

Ajouter un commentaire Commentaires
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
24 juil. 2004 à 18:22
Le Trishell est un algo de trie plu sperformant qu'un trie par insertion (tri par rotation). Pour plus de précision sur le trishell : http://www-ipst.u-strasbg.fr/ipst/deug-ti/aide-c/tris/trishell.htm
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
24 juil. 2004 à 13:35
bah j'ai pas compris vraimzent pourquois ça fonctionne, mais ça fonctionne très bien...
C'est vraiment plus efficace que :
function tri(){
for ( i=1 ; i<5 ; i++ ) {
for ( j=i+1 ; j<6 ; j++ ) {
if (cartes[i]>cartes[j]){
a=cartes[i];
cartes[i]=cartes[j];
cartes[j]=a;
}
}
}
}
Quand on a que 5 cartes, c'est vrais que l'on ne voit pas la diférence de temps...
C'est une portion de code de mon jeu de poker en javascript...
Je fais bcp de jeux de cartes, l'un de mes jeu est sur tibasic, alors éviodement celui sur tibasic doit être farfaitement optimisé... (ma ti fait 15 mhtz et est vraiument lente pour certaines aplications)...
Donc voila, j'aimerais bien comprendre lequel de ces deux algorythme est le plus rapide, et comment fonctionne le votre merci.
cs_krust Messages postés 140 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 19 novembre 2006
24 juil. 2004 à 00:20
Oui, comme dit coucou, décrit ton algorythme car c'est toujours bien d'expliquer le concepte ça aideà la compréention ;)
Donne aussi le type d'algorythme (par ex : O(n²) pour les algo ou le nombre d'instructions nécéssaire augmenter au caré etc...)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
23 juil. 2004 à 12:35
perso, j'ai regardé vite fait ton code, ça doit être efficace...
je n'ai pas compris comment ça marche...
tu pourrais détailler ton code stp?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.