Problème programme de tri en C

Fermé
Marionaucarre Messages postés 1 Date d'inscription mardi 3 mai 2016 Statut Membre Dernière intervention 3 mai 2016 - 3 mai 2016 à 12:39
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 3 mai 2016 à 20:20
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 */
}
}

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
3 mai 2016 à 20:20
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