10.1 Comparaison de différents algorithmes de tri
Voici un tableau comparatif pour différents algorithmes de tri :
Algorithme | Meilleur temps | Temps moyen | Pire temps | Complexité spatiale | Stabilité |
---|---|---|---|---|---|
Tri à bulles (Bubble Sort) | O(n) | O(n^2) | O(n^2) | O(1) | Oui |
Tri par insertion (Insertion Sort) | O(n) | O(n^2) | O(n^2) | O(1) | Oui |
Tri par sélection (Selection Sort) | O(n^2) | O(n^2) | O(n^2) | O(1) | Non |
Tri par fusion (Merge Sort) | O(n log n) | O(n log n) | O(n log n) | O(n) | Oui |
Tri rapide (Quick Sort) | O(n log n) | O(n log n) | O(n^2) | O(log n) | Non |
Tri par tas (Heap Sort) | O(n log n) | O(n log n) | O(n log n) | O(1) | Non |
10.2 Critères de choix d'un algorithme de tri pour différentes tâches
Chaque algorithme a ses points forts et ses faiblesses. Pour de petits volumes de données, même le tri à bulles peut être le meilleur choix.
Vous devez considérer ces critères :
1. Taille des données :
- Petits ensembles de données (n < 1000) :
- Tri à bulles, Tri par insertion : simples et compréhensibles, efficaces pour de petits ensembles de données.
- Grands ensembles de données (n > 1000) :
- Tri par fusion, Tri rapide, Tri par tas : plus complexes, mais efficaces pour de grands volumes de données.
2. Structure des données :
- Données presque triées :
- Tri par insertion : fonctionne presque de façon linéaire pour les données presque triées.
- Données aléatoires :
- Tri rapide, Tri par fusion, Tri par tas : efficaces pour les données aléatoires.
3. Stabilité :
- Tri stable requis :
- Tri par insertion, Tri par fusion : conservent l'ordre relatif des éléments de même valeur.
- Tri stable non requis :
- Tri par sélection, Tri rapide, Tri par tas : peuvent être utilisés si la stabilité n'est pas importante.
4. Mémoire supplémentaire :
- Mémoire limitée :
- Tri par insertion, Tri par sélection, Tri par tas : utilisent
O(1)
de mémoire supplémentaire.
- Tri par insertion, Tri par sélection, Tri par tas : utilisent
- Mémoire supplémentaire disponible :
- Tri par fusion : nécessite
O(n)
de mémoire supplémentaire, mais peut être efficace pour les grandes données.
- Tri par fusion : nécessite
10.3 Exemples de tâches où un algorithme est préféré à un autre
Analysons maintenant les tâches au lieu des algorithmes. Exemples de tâches où un algorithme est préféré à un autre :
1. Tri de petits tableaux :
Tri à bulles, Tri par insertion : leur simplicité de mise en œuvre les rend idéaux pour les petits tableaux, surtout si les tableaux sont presque triés.
2. Tri de grands tableaux :
Tri rapide, Tri par fusion, Tri par tas : efficaces pour de grands volumes de données grâce à leur complexité temporelle logarithmique.
3. Tri de tableaux presque triés :
Par exemple, vous avez inséré quelques éléments dans un tableau déjà trié.
Tri par insertion : fonctionne presque de façon linéaire sur ces tableaux.
4. Tri de données où la stabilité est importante :
Tri par fusion : conserve l'ordre des éléments identiques et est efficace pour de grands volumes de données.
Tri par insertion : conserve également l'ordre et est efficace pour les petits volumes de données.
5. Tri avec mémoire limitée :
Tri par sélection, Tri par tas : utilisent seulement O(1)
de mémoire supplémentaire et peuvent être utilisés si la mémoire est limitée.
6. Tri parallèle :
Tri par fusion : se parallélise facilement car chaque moitié peut être triée indépendamment.
GO TO FULL VERSION