Tri

Fermé
lili - 27 juin 2011 à 17:34
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 - 28 juin 2011 à 12:17
Bonjour,


je cherche la solution de tryage de tableau..

6 réponses

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 27/06/2011 à 21:05
Salut, voici une liste des Algorithmes de tris ...
1
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
27 juin 2011 à 18:23
Interesse-toi à l'algorithme 'QuickSort', c'est simple et rapide...
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
27 juin 2011 à 18:29
Mais pas toujours ^^
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 27/06/2011 à 18:34
Comment ça pas toujours ? le quicksort pas toujours simple et rapide tu veux dire ? Je pensais la réponse adéquate vu que Lili est probablement débutante, et le quicksort présent la plupart du temps dans les fonctions du compilateurs... Sinon, il faut le dire, y'a beaucoup mieux pour faire du tri efficace, mais c'est plus compliqué...
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
27 juin 2011 à 18:48
Bah si ma mémoire est bonne, le quicksort peut être en O(n²) par exemple si on tri un tableau déjà trié.
Après il y a des moyens de contourner ce problème en "mélangeant" les données avant de les trier.
Ou bien s'orienter vers des tris comme heapsort ou smoothsort qui sont toujours en O(n.log n)
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
27 juin 2011 à 22:03
oui c'est vrai, le quicksort peut parfois être très médiocre, mais on accorde l'effort en fonction du problème, et s'il s'agit de trier un tableau d'une centaine d'entrées une seule fois...
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
27 juin 2011 à 23:25
Pour trier une centaine d'entrée une fois, tu fais un bubblesort ^^
Pour trier des millions d'entrées, tu fais du calcul parallèle sur un réseau papillon
Et entre les deux y a le choix ;-)

Je pense que si quicksort est le plus utilisé dans les implémentations c'est parce qu'il est peu gourmand en ressource, contrairement au tri par fusion par exemple qui utilise deux fois la mémoire initiale du tableau pour faire le calcul.

D'ailleurs dans le lien de JooS, les statistiques sont en nombre d'écritures+comparaisons, habituellement quand on parle de complexité, on évalue théoriquement le nombre de comparaisons pour le pire des cas, et les résultats seraient légèrement différents. D'ailleurs ici on ne sait pas trop dans ces stats comment sont les tableaux avant le tri (triés, presque triés, triés à l'envers...) certains tris sont meilleurs si on est dans un certain type de configuration, et il faut savoir profiter de ces avantages.
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
28 juin 2011 à 06:44
Tout à fait d'accord^^. Dès qu'on souhaite trier de grosse quantitées en critères multiples, il est nécessaire d'exploiter plusieurs approches. En tant qu'amateur d'optimisation poussée, j'ai longuement muri ce sujet, et ce que j'ai trouvé de plus efficace ce fait en deux points :

- Evaluation d'une valeur grossière 16 bits compactée pour chaque entrée, pouvant être déterminée selon plusieurs clés, mais pas forcément toutes, tout en comptant le nombre d'entrées pour chaque valeur grossières,
Repositionnement direct des entrées en fonction de chaque valeur approchée. A ce stade on trouve de gros blocs d'entrées correctement positionnés, mais anarchiques en leur sein.

- Si le nombre d'entrées reste important, on recommence en approfondissant les critères de clés, sinon utilisation d'un quicksort modifié, positionnant les valeurs supérieures, inférieures ET égales au pivot de comparaison.
L'étape 'Quicksort' se fait de manière 'fenêtrée', le tri étant effectué jusqu'au bout uniquement là où le besoin est réel - la zone affichée par exemple-, grâce à un tableau de flags, déterminant les zones dans lesquelles le tri à été finalisé.

J'ai développée une unitée de 2500 lignes en assembleur à ce sujet, en testant différentes possibilitées, et celle-çi a donné les meilleurs résultats. J'obtiens un tri de 250000 fichiers (nom, taille, ext, etc...) en 80 ms en moyenne sur athlon 3500.

Après, pour un débutant qui souhaite juste réussir à trier un petit tableau, un quicksort peut convenir !
0
ayoubel Messages postés 5 Date d'inscription jeudi 23 juin 2011 Statut Membre Dernière intervention 30 juin 2011
27 juin 2011 à 23:23
le tri par sélection d'un tableau :
for (i=0; i<N-1; i++)
{
indice=i;
for (j=i+1; j<N; j++)
{
if (t[j]<t[indice])
indice=j;
}
tp=t[i];
t[i]=t[indice];
t[indice]=tp;


}
tri par insertion :
or (k=0; k<n; k++)
{
v=t[k];
i=k-1;
while (i>=0 && v<t[i])
{
t[i+1]=t[i];
i--;
}
t[i+1]=v;
}
tri par bull :
for (i=0;i<n;i++){
for (k=n-1; k>=i+1; k--){
if (t[k]<t[k-1]){
tp=t[k];
t[k]=t[k-1];
t[k-1]=tp;
}
}
}

bon courage :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
28 juin 2011 à 07:48
Je vous admire les gars, parce que vous pouvez lui donner une solution, alors que notre amie lili n'a jamais précisé de quel langage elle parlait...

Enfin moi je dis ça je dis rien :D
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
28 juin 2011 à 11:40
Les algorithmes sont toujours les mêmes, peu importe le langage...
Même pour trier nos chaussettes (ou autre ^^) on pourrait dire quel algo est le mieux :p
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
28 juin 2011 à 12:17
Tout à fait !
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
27 juin 2011 à 17:34
Bonjour,

bon courage.

Au revoir.
-1