Bonjour,
Dans un projet sur lequel je bosse en ce moment, je dois impl�menter un tri.
Jusque l�, rien de tr�s complexe...
Mais voila, quel algo choisir ?
Voici les d�tails :
Je doit trier un "buffer" de structures, qui ressemble � �a :
Le buffer est d�clar� comme �a :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 struct sEvenement { int m_position; char m_data01; char m_data02; char m_data03; char m_data04; };
(attention, le tableau evenements est bien un tableau de pointeurs vers des evenements allou�s en m�moire)
Bon, j'ai pas choisi le format de mes donn�es, c'�tait l� avant moi...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 struct sEvenementsBuffer { int numEvenements; sEvenement* evenements[MAX_EVEMENTS]; };
Je dois ecrire une fonction qui prend une structure sEvenementsBuffer en entr�e et tri son tableau d'evenements par m_position croissante.
Il suffit donc de trier les pointeurs dans le tableau en fonction de :
evenements[i]->m_position
Voila les contraintes :
- 1024 �l�ments au maximum
- entre 50 et 100 �l�ments quand le syst�me est "en charge"
- entre 0 et 20 �l�ments quand le syst�me est "p�p�re"
- � priori, les donn�es n'ont aucune raison d'�tre "presque tri�es" � l'avance
- �a doit aller tr�s tr�s vite
D'apr�s ce que j'ai trouv� ici :
http://fr.wikipedia.org/wiki/Algorithme_de_tri
- le tri par insertion est le plus rapide pour de petites listes
- le "quicksort" est le plus rapide pour de plus grandes listes
Pour l'instant, je suis parti sur l'id�e d'impl�menter plusieurs algo en fonction du nombre d'�l�ments � trier.
Auriez-vous une super id�e pour avoir un truc r��lement efficace ?
Partager