Algorithme de tri d'un tableau par ordre croissant ou décroissant.

Soyez le premier à donner votre avis sur cette source.

Vue 32 151 fois - Téléchargée 1 062 fois

Description

Bonjour,
Le code source que je vais présenter est simple mais on y pense pas tout le temps.
Il classe un tableau par ordre décroissant (ou croissant avec une petite modification). Il utilise un algorithme très simple que j'ai sorti de ma tête mais si il doit probablement déjà exister.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

void tri(int* tabl,int longueur);
int changer_pos(int *tabl1, int *tabl2);

int main()
{
    int n;
    int* numbers;
    int _i;

    scanf("%d\n", &n);
    numbers = calloc(n, sizeof(int));
    for(_i = 0; _i < n; ++_i)
        scanf("%d", &numbers[_i]);

    tri(numbers,n);

    for(_i=0;_i<n;++_i)
        printf("%d ",numbers[_i]);

    free(numbers);

    return 0;
}

void tri(int* tabl,int longueur)
{
    int i, _i;
    for(_i=0;_i<longueur;++_i)
    {
        for(i=0;i<longueur-1;i++)
        {
            if(tabl[i] > tabl[i+1])
            {
                changer_pos(&tabl[i],&tabl[i+1]);
            }
        }
    }
}

int changer_pos(int *tabl1, int *tabl2)
{
    int inter = 0;

    inter = *tabl1;

  • tabl1 = *tabl2;
  • tabl2 = inter;
}

Conclusion :


UTILISATION :

On rentre le nombre de données que nous allons entrer, puis on entre ces données qui vont ensuite être triées par ordre croissant.

PRINCIPE :

On compare le nombre de position i dans un tableau avec le nombre de position i+1 excepté si i est égal au nombre de donnés entrées dans le tableau.
Si le nombre de position i est plus grand, rien ne se passe, si c'est le contraire, ces deux nombres échangent leur position grâce à la fonction changer_pos().
Ces étapes se répètent autant de fois qu'il y a de nombres entrés.

REMARQUES :

On peut trier les nombres par ordre croissant en modifiant simplement le "if(tabl[i] < tabl[i+1])" en "if(tabl[i] > tabl[i+1])"
On peut inclure les nombres à virgule flottante (double) en modifiant la ligne de déclaration du tableau (remplacer int par double);

Voilà, j'espère que je vous ai aidé un peu et n'hésitez pas si vous avez une remarque ou un commentaire.
Informatiquement,
Thüzhen.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de gnairod

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.