Cela va peut-être paraître simple pour certain mais je bloque sur une fonction censé classé un tableau par ordre croissant... Est ce que quelqu'un pourrait me donner des pistes a partir de ceci :
int triTableau(int tableau[], int tailleTableau)
{
int i = 0;
int ii = 0;
int tableauClasse[4] = {0};
int petit = 1;
int a = 0;
int tour = 0;
do
{
for(ii=0; ii < tailleTableau; ii++)
{
if (tableau[i] < tableau[ii] && petit == 1)
{
petit = 1;
}
else
{
petit = 0; // on verifi que la valeur 1 est plus petites que toute les autres si elle l'est petit est vrai
}
}
if ( petit = 1 )
{
tableauClasse[a] = tableau[i];
a++; // si petit est vrai on la met en postion 1
}
tour ++;
i++;
}while(tour < tailleTableau); // on refait l'opération pour la deuxième place
i = 0;
for(i=0; i < tailleTableau; i++)
{
tableau[i] = tableauClasse[i];
}
}
Pour ne pas te faire le travail à ta place non plus, je te propose un algo de tri par selection ... A toi de le traduire en C, ou le langage que tu souhaite
fonction SelectSort(tab[n])
i, j, min, indice: entier
début
Pour i de 1 à n-1 faire
min = tab[i]
indice = i
Pour j de i+1 à n faire
Si (tab[j] < min) alors
min = tab[j]
indice = j
fin si
fin pour
tab[indice] = tab[i]
tab[i] = min
fin pour
fin
Ce n'est pas le tri le plus opti, mais il est simple !
Il y a pleins de tri qui sont plus ou moins perfomants : le tri par sélection fait parti des plus nulles mais aussi des plus simples à faire !
Le principe ? Tu cherches le maximum de la liste de taille n et tu l'échanges avec le dernier élément de la liste, puis tu fais ça pour le reste de la liste de taille n-1 ( tu echangeras avec l'avant dernier du coup )
Exemple :
[7,2,5] -> 7 est le max, echange 7 et 5
[5,2,7] -> 5 est le max, echange 5 et 2
[2,5,7] -> Liste croissante
- Edité par MrsSniperMrsniper 14 décembre 2018 à 12:18:07
Il y a pleins de tri qui sont plus ou moins perfomants : le tri à bulle fait parti des plus nulles mais aussi des plus simples à faire !
Le principe ? Tu cherches le maximum de la liste de taille n et tu l'échanges avec le dernier élément de la liste, puis tu fais ça pour le reste de la liste de taille n-1 ( tu echangeras avec l'avant dernier du coup )
Ceci est un tri par sélection, pas un tri à bulles.
Parcourir tout le tableau en comparant les éléments successifs, les échanger s'ils ne sont pas correctement ordonnés. Si on a tout parcouru sans faire d'échange, c'est fini. Sinon on recommence. C'est le plus basique mais est très loin d'être le plus performant.
J'ai une préférence pour le tri par insertion qui est à peine plus complexe. C'est aussi un algorithme O(n^2) mais il est souvent nettement plus rapide.
Okey merci beaucoup les gars j'ai compris maintenant
edit :
Okey alors j'ai voulu tenté le tri à bulles je pensais avoir compris mais j obtient un résultat complètement foireux...
int triTableau(int tableau[], int tailleTableau)
{
int i = 0;
int ii = 0;
int retienTableau = 0;
for (ii =0; ii < tailleTableau; ii++)
{
for (i =0; i < tailleTableau; i++)
{
if (tableau[i] > tableau[i+1]) // si le nombre x du tableau est superieur a y
{
retienTableau = tableau[i+1];
tableau[i+1] = tableau[i];
tableau[i] = retienTableau; // on interchange les deux nombres
}
}
tailleTableau--;
}
merci en tout cas
- Edité par JulesDelaunayLamiraud 16 décembre 2018 à 15:57:17
Dans la comparaison avec l'élément suivant, il y a un bug en bout de tableau, lorsqu'il n'y a pas d'élément suivant.
Prolème fonction pour trier un tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.