Tri sélection recursif
Résolu/Fermé
victoria ghabri
Messages postés
95
Date d'inscription
jeudi 27 septembre 2012
Statut
Membre
Dernière intervention
3 juin 2014
-
9 déc. 2012 à 14:40
ksc - 9 mars 2021 à 20:49
ksc - 9 mars 2021 à 20:49
A voir également:
- Tri par selection recursive
- Excel trier par ordre croissant chiffre - Guide
- Logiciel tri photo gratuit - Guide
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Excel trier par date ne fonctionne pas ✓ - Forum Excel
- Colis rejeté par le centre de tri aliexpress - Forum Consommation & Internet
1 réponse
ReganDryke
Messages postés
13
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
22 février 2013
6
9 déc. 2012 à 15:11
9 déc. 2012 à 15:11
Un gros coup de debuger plus tard j'ai enfin trouve le probleme dans ton code.
Il vient de ta condition :
Tu dois tester par rapport au start_index et non par rapport au min_index qui lui ce deplace. Si tu n'as pas de chance lors de ton test (cas d'erreur typique tableau de 5 valeur : 45231)
Tu vas passer une fois et obtenir :15423
mais quand il vas tester la cinquième valeur (tu sera a : 12543) ton min_index sera egal a 3 (car tu viens juste de passer le 2 en deuxième position) donc il vas comparer ton 3 avec ton 4 et donc deplacer ton 4 ce qui genere une erreur.
Ps: a l'avenir est ce que tu pourrais espacer ton code quand tu demande de l'aide. Ca me faciliterai beaucoup le travail. Un code comme celui ci dessous est toujours plus facile a lire.
Il vient de ta condition :
if (A[i]<=A[min_index])
Tu dois tester par rapport au start_index et non par rapport au min_index qui lui ce deplace. Si tu n'as pas de chance lors de ton test (cas d'erreur typique tableau de 5 valeur : 45231)
Tu vas passer une fois et obtenir :15423
mais quand il vas tester la cinquième valeur (tu sera a : 12543) ton min_index sera egal a 3 (car tu viens juste de passer le 2 en deuxième position) donc il vas comparer ton 3 avec ton 4 et donc deplacer ton 4 ce qui genere une erreur.
Ps: a l'avenir est ce que tu pourrais espacer ton code quand tu demande de l'aide. Ca me faciliterai beaucoup le travail. Un code comme celui ci dessous est toujours plus facile a lire.
#include <iostream> using namespace std; void tri_selection(int start_index,int A[],int n) { int min_index; if (start_index<n) { min_index=start_index; for(int i=start_index;i<n;i++) { if (A[i]<=A[start_index]) { min_index=i; int aux=A[min_index]; A[min_index]=A[start_index]; A[start_index]=aux; for(int j=0;j<n;j++) { cout<<A[j] ; } cout<<endl <<A[min_index]<<endl; } } tri_selection(start_index+1,A,n); } } void saisie (int n ,int A[]) { int i; for( i=0;i<n;i++) { cout<<"donner un element"<<endl; cin>>A[i]; } } void affiche(int n,int A[]) { int i ; for(i=0;i<n;i++) { cout<<A[i] ; } } int main() { int A[100];int n; cout<<"donner la taiile n"<<endl; cin>>n; saisie(n,A); affiche(n,A); tri_selection(0,A,n); cout<<"***********"<<endl; affiche(n,A); return 0; }
9 déc. 2012 à 16:23
9 mars 2021 à 20:49