Algorithme de tri ( tri mini )

Fermé
Doolagoo - Modifié par jordane45 le 5/12/2015 à 14:38
 Utilisateur anonyme - 5 déc. 2015 à 14:37
Bonjour à tous,
J'essaye de trier ce tableau et malheureusement je n'y parviens pas.
Pourriez vous m'aider et me dire ce qui ne va pas dans mon programme ? merci

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

int main()
{
    int tab[5]={6,12,4,11,1};
    int i, imin, j, aux, n;
    for(i=0;i<n-1;i++)
    {
        imin=i;

        for(j=i+1;j<n;j++)
        {
            if(tab[j]<tab[imin])
            {
                imin=j;
                aux=tab[imin];
                tab[imin]=tab[i];
                tab[i]=aux;
            }
        }
        for(j=i+1;j<n;j++)
        {
            printf("%d\n",tab[j]);
        }
    }
return 0;
}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

Bonjour

Je n'ai pas essayé, mais il me semble qu'il y a un problème d'algorithme.
Ton indice imin ne devrait pas exister. Dans ta boucle intérieure, tu devrais toujours faire la comparaison avec tab[i].
Tel que tu as écrit, quand tu permutes deux éléments, tu affectes aussi ton imin : tab[imin] désigne donc toujours le même élément, et non pas le plus petit que tu viens de trouver et de mettre dans tab[i].
0