Maison >Problème commun >Qu'est-ce que le tri à bulles
Le tri à bulles est un algorithme de tri simple mais inefficace. Son principe est de "faire bouillonner" progressivement le plus grand élément jusqu'à la fin du tableau par comparaison et échange entre les éléments adjacents. La complexité temporelle est O(n^2), où n est la longueur du tableau à trier. Introduction détaillée : en commençant par le premier élément du tableau, comparez les deux éléments adjacents dans l'ordre. Si l'élément précédent est supérieur au dernier élément, échangez leurs positions. Après un tour de comparaison, l'élément le plus grand "bouillonnera" Allez à. la fin du tableau, commencez par le premier élément du tableau, répétez l'opération ci-dessus, et ainsi de suite.
Le système d'exploitation de ce tutoriel : système Windows 10, ordinateur DELL G3.
Le tri à bulles est un algorithme de tri simple mais moins efficace. Son principe est de « faire bouillonner » progressivement le plus gros élément jusqu'à l'extrémité du tableau par comparaison et échange entre éléments adjacents. La complexité temporelle du tri à bulles est O(n^2), où n est la longueur du tableau à trier.
L'idée de mise en œuvre du tri à bulles est très simple. Tout d'abord, en commençant par le premier élément du tableau, comparez les deux éléments adjacents dans l'ordre. Si le premier élément est supérieur au dernier élément, leurs positions sont inversées. Après ce tour de comparaison, le plus grand élément « bouillonnera » jusqu’à la fin du tableau. Ensuite, en commençant par le premier élément du tableau, répétez le processus de comparaison et d’échange ci-dessus jusqu’à ce que tous les éléments soient classés du plus petit au plus grand.
Ce qui suit est un exemple de code pour le tri à bulles :
void bubbleSort(int arr[], int n) { for (int i = 0; i < n-1; i++) { for (int j = 0; j < n-i-1; j++) { if (arr[j] > arr[j+1]) { // 交换arr[j]和arr[j+1]的位置 int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
L'avantage du tri à bulles est qu'il est simple à mettre en œuvre et a une logique claire. Il suffit d'utiliser une variable supplémentaire pour échanger des éléments. Cependant, les inconvénients du tri à bulles sont également évidents. Sa complexité temporelle est élevée, en particulier lors du traitement de données à grande échelle, et son efficacité est très faible. Étant donné qu'un seul élément peut être placé dans la position correcte à chaque tour, n-1 tours d'opérations de comparaison et d'échange sont nécessaires, ce qui fait que la complexité temporelle du tri des bulles est de O (n ^ 2).
Afin d'améliorer l'efficacité du tri des bulles, une stratégie d'optimisation peut être introduite, qui consiste à définir un bit d'indicateur pour déterminer si un échange a eu lieu à chaque tour de comparaison. Si aucun échange n'a lieu lors d'un certain cycle de comparaison, cela signifie que le tableau est déjà en ordre et que le tri peut être terminé plus tôt. Cela peut réduire les opérations de comparaison et d’échange inutiles et améliorer l’efficacité du tri.
En bref, bien que le tri à bulles soit simple et facile à comprendre, il est rarement utilisé dans des applications pratiques car moins efficace. Lors du traitement de données à grande échelle, les algorithmes de tri les plus couramment utilisés sont le tri rapide, le tri par fusion, etc. Cependant, comprendre le principe et le processus de mise en œuvre du tri à bulles est également utile pour apprendre et comprendre d’autres algorithmes de tri.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!