Problème programme de tri en C

Marionaucarre Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un problème pour un projet d'informatique que je dois réaliser. En effet nous devons faire un programme en C pour trier jusqu'à 100 valeurs dans un tableau. Avec ma partenaire nous avons choisi le tri par sélection.
Notre programme fonctionne seulement la dernière valeur rentrer se met automatiquement en première. Pourriez vous nous dire quel est le problème ?
Voici notre programme:
#include <stdio.h>

void main (void){
int tab[100], n, i, j, min, echange; /* initialisation des variables */

printf("Entrez le nombre d'elements\n"); /*demander puis lire le nombre d'elements a trier */
scanf("%d", &n);

printf("Entrez les %d nombres a trier\n", n); /* demander les differents elements a trier */
for (i=0 ; i<n ; i++){
scanf("%d",&tab[i]); /* creer un tableau de la taille des n elements */
}
for (i=0 ; i<n-1 ; i++){
min=i;
for (j=i+1 ; j<n ; j++){
if (tab[j]<tab[min]){
min=j;
echange=tab[min];
tab[min]=tab[i];
tab[i]=echange;
}
}
}
printf("Nombres dans le bon ordre:\n");

for ( i = 0 ; i < n ; i++ ){
printf("%d\n", tab[i]); /* afficher le tableau dans le bon ordre */
}
}
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,
Pourquoi changer min dans la boucle j?
Faire plus simplement:
for (j=i+1 ; j<n ; j++) { 
   if (tab[j]<tab[min]) { 
      echange=tab[j]; 
      tab[j]=tab[i]; 
      tab[i]=echange; 
   }
}
0