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 :
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;
};
Le buffer est d�clar� comme �a :
(attention, le tableau evenements est bien un tableau de pointeurs vers des evenements allou�s en m�moire)

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
struct sEvenementsBuffer
{
   int           numEvenements;
   sEvenement*   evenements[MAX_EVEMENTS];
};
Bon, j'ai pas choisi le format de mes donn�es, c'�tait l� avant moi...

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 ?