Bubble Algorithme de tri avec Python en utilisant un exemple de liste
โก Rรฉsumรฉ intelligent
BubblLa fonction `e` trie les รฉlรฉments d'une liste par ordre croissant en comparant et en รฉchangeant successivement les valeurs adjacentes.ping Ils sont sรฉlectionnรฉs lorsque l'รฉlรฉment de gauche est plus grand. Ce tri par comparaison simple convient aux petits ensembles de donnรฉes ou ร ceux presque triรฉs et permet d'enseigner efficacement les bases du tri.

Qu'est-ce que la Bubble Trier ?
Bubble Trier L'algorithme de tri par ordre croissant compare deux valeurs adjacentes. Si la premiรจre valeur est supรฉrieure ร la seconde, elle prend la place de la seconde, et inversement. Si la premiรจre valeur est infรฉrieure ร la seconde, elles restent en place.ping est fait.
Ce processus est rรฉpรฉtรฉ jusqu'ร ce que toutes les valeurs d'une liste aient รฉtรฉ comparรฉes et รฉchangรฉes si nรฉcessaire. Chaque itรฉration est gรฉnรฉralement appelรฉe une passe. Le nombre de passes dans un tri ร bulles est รฉgal au nombre d'รฉlรฉments dans une liste moins un.
Dans ce nouvel article concernant notre nouveau projet Bubble Tri dans Python tutoriel Vous dรฉcouvrirez le problรจme qu'il rรฉsout, sa forme optimisรฉe, une prรฉsentation visuelle รฉtape par รฉtape et un exemple de fonctionnement. Python programme et ses caractรฉristiques de performance.
Mettre en ลuvre le Bubble Algorithme de tri
Nous allons dรฉcomposer l'implรฉmentation en trois (3) รฉtapes, ร savoir le problรจme, la solution et l'algorithme que nous pouvons utiliser pour รฉcrire du code pour n'importe quel langage.
Le problรจme
Une liste d'articles est donnรฉe dans un ordre alรฉatoire, et nous aimerions les ranger de maniรจre ordonnรฉe.
Considรฉrez la liste suivante :
[21, 6, 9, 33, 3]
La solution
Parcourez la liste en comparant deux รฉlรฉments adjacents et en les รฉchangeant.ping les retenir si la premiรจre valeur est supรฉrieure ร la seconde.
Le rรฉsultat devrait รชtre le suivant :
[3, 6, 9, 21, 33]
Algorithme
L'algorithme de tri ร bulles fonctionne comme suit :
รtape 1) Obtenez le nombre total d'รฉlรฉments. Obtenez le nombre total d'รฉlรฉments dans la liste donnรฉe.
รtape 2) Dรฉterminez le nombre de passes extรฉrieures (n โ 1) ร effectuer. Sa longueur est รฉgale ร la liste moins un.
รtape 3) Effectuez (n โ 1) passes internes pour la passe externe 1. Rรฉcupรฉrez la valeur du premier รฉlรฉment et comparez-la avec celle du deuxiรจme. Si la deuxiรจme valeur est infรฉrieure ร la premiรจre, inversez leurs positions.
รtape 4) Rรฉpรฉtez l'รฉtape 3 jusqu'ร atteindre le passage extรฉrieur (n โ 1). Prenez l'รฉlรฉment suivant dans la liste, puis rรฉpรฉtez le processus effectuรฉ ร l'รฉtape 3 jusqu'ร ce que toutes les valeurs soient placรฉes dans leur ordre croissant correct.
รtape 5) Renvoie le rรฉsultat une fois tous les passages effectuรฉs. Renvoie la liste triรฉe.
รtape 6) Optimiser l'algorithme.
รvitez les passes internes inutiles si la liste ou les valeurs adjacentes sont dรฉjร triรฉes. Par exemple, si la liste fournie contient dรฉjร des รฉlรฉments qui ont รฉtรฉ triรฉs par ordre croissant, nous pouvons alors rompre la boucle plus tรดt.
Optimisรฉ Bubble Algorithme de tri
Par dรฉfaut, l'algorithme de tri ร bulles dans Python compare tous les รฉlรฉments de la liste, que la liste soit dรฉjร triรฉe ou non. Si la liste donnรฉe est dรฉjร triรฉe, comparer toutes les valeurs est une perte de temps et de ressources.
L'optimisation du tri ร bulles nous aide ร รฉviter les itรฉrations inutiles et ร รฉconomiser du temps et des ressources.
Par exemple, si les premier et deuxiรจme รฉlรฉments sont dรฉjร triรฉs, il nโest pas nรฉcessaire de parcourir le reste des valeurs. L'itรฉration est terminรฉe et la suivante est lancรฉe jusqu'ร ce que le processus soit terminรฉ comme indiquรฉ ci-dessous. Bubble Exemple de tri.
L'optimisation s'effectue en suivant les รฉtapes suivantes :
รtape 1) Crรฉez une variable indicateur qui surveille si un รฉchange a lieu.ping cela s'est produit dans la boucle interne.
รtape 2) Si les valeurs ont รฉchangรฉ leurs positions, passez ร l'itรฉration suivante.
รtape 3) Si les valeurs n'ont pas รฉchangรฉ leurs positions, terminez la boucle interne et poursuivez avec la boucle externe.
Un tri ร bulles optimisรฉ est plus efficace car il exรฉcute uniquement les รฉtapes nรฉcessaires et ignore celles qui ne sont pas obligatoires.
Reprรฉsentation visuelle
รtant donnรฉ une liste de cinq รฉlรฉments, les images suivantes illustrent comment le tri ร bulles parcourt les valeurs lors du tri.
L'image suivante montre la liste non triรฉe :
Premiรจre itรฉration
รtape 1)
Les valeurs 21 et 6 sont comparรฉes pour vรฉrifier laquelle est supรฉrieure ร l'autre.
21 est supรฉrieur ร 6, donc 21 prend la position occupรฉe par 6 tandis que 6 prend la position qui รฉtait occupรฉe par 21.
Notre liste modifiรฉe ressemble dรฉsormais ร celle ci-dessus.
รtape 2)
Les valeurs 21 et 9 sont comparรฉes.
21 est supรฉrieur ร 9, donc nous รฉchangeons les positions de 21 et 9.
La nouvelle liste est dรฉsormais celle ci-dessus.
รtape 3)
Les valeurs 21 et 33 sont comparรฉes pour trouver la plus grande.
La valeur 33 est supรฉrieure ร 21, donc pas d'รฉchangeping a lieu.
รtape 4)
Les valeurs 33 et 3 sont comparรฉes pour trouver la plus grande.
La valeur 33 est supรฉrieure ร 3, on รฉchange donc leurs positions.
La liste triรฉe ร la fin de la premiรจre itรฉration est semblable ร celle ci-dessus.
Deuxiรจme itรฉration
La nouvelle liste aprรจs la deuxiรจme itรฉration est la suivante :
Troisiรจme itรฉration
La nouvelle liste aprรจs la troisiรจme itรฉration est la suivante :
Quatriรจme itรฉration
Voici la nouvelle liste aprรจs la quatriรจme itรฉration :
Python Exemples
Le code suivant montre comment implรฉmenter le Bubble Algorithme de tri dans Python.
def bubbleSort(theSeq): n = len(theSeq) for i in range(n - 1): flag = 0 for j in range(n - 1): if theSeq[j] > theSeq[j + 1]: tmp = theSeq[j] theSeq[j] = theSeq[j + 1] theSeq[j + 1] = tmp flag = 1 if flag == 0: break return theSeq el = [21, 6, 9, 33, 3] result = bubbleSort(el) print(result)
Exรฉcution du programme de tri ร bulles ci-dessus dans Python produit les rรฉsultats suivants :
[3, 6, 9, 21, 33]
Code Explication
L'explication du Python BubblLe code du programme de tri est le suivant :
ICI,
- Dรฉfinit une fonction bubbleSort qui accepte un paramรจtre theSeq. Le code ne produit rien.
- Rรฉcupรจre la longueur du tableau et assigne cette valeur ร une variable n. Le code n'affiche rien.
- Lance une boucle `for` qui exรฉcute l'algorithme de tri ร bulles (n โ 1) fois. Il s'agit de la boucle externe. Le code ne produit aucun affichage.
- Dรฉfinit une variable indicateur permettant de dรฉterminer si un รฉchange a eu lieu ou non. Ceci ร des fins d'optimisation. Le code ne produit aucune sortie.
- Dรฉmarre la boucle interne qui compare toutes les valeurs de la liste de la premiรจre ร la derniรจre. Le code ne produit rien.
- Utilise l'instruction if pour vรฉrifier si la valeur du cรดtรฉ gauche est supรฉrieure ร celle du cรดtรฉ droit immรฉdiat. Le code ne produit rien.
- Si la condition est vraie, la valeur de theSeq[j] est affectรฉe ร la variable temporaire tmp. Ce code ne produit aucun affichage.
- La valeur de theSeq[j + 1] est affectรฉe ร la position de theSeq[j]. Le code ne produit aucun rรฉsultat.
- La valeur de la variable tmp est affectรฉe ร la position theSeq[j + 1]. Le code ne produit aucun rรฉsultat.
- La variable indicateur prend la valeur 1 pour signaler qu'un รฉchange a eu lieu. Le code n'affiche rien.
- Utilise une instruction if pour vรฉrifier si la valeur de la variable flag est 0. Le code n'affiche rien.
- Si la valeur est 0, alors nous appelons l'instruction break qui sort de la boucle interne.
- Renvoie la valeur de theSeq aprรจs son tri. Le code gรฉnรจre la liste triรฉe.
- Dรฉfinit une variable el qui contient une liste de nombres alรฉatoires. Le code ne produit rien.
- Attribue la valeur de la fonction bubbleSort ร un rรฉsultat variable.
- Imprime la valeur du rรฉsultat variable.
Bubblles avantages du tri
Voici quelques avantages de l'algorithme de tri ร bulles :
- C'est facile ร comprendre.
- Il fonctionne trรจs bien lorsque la liste est dรฉjร triรฉe ou presque.
- Il ne nรฉcessite pas de mรฉmoire รฉtendue.
- Il est facile d'รฉcrire le code de l'algorithme.
- Les besoins en espace sont minimes par rapport aux autres algorithmes de tri.
Bubble tri Inconvรฉnients
Voici quelques inconvรฉnients de l'algorithme de tri ร bulles :
- Il ne fonctionne pas bien lors du tri de grandes listes. Cela prend trop de temps et de ressources.
- Il est principalement utilisรฉ ร des fins acadรฉmiques et non pour des applications concrรจtes.
- Le nombre d'รฉtapes nรฉcessaires pour trier la liste est de l'ordre n2.
Analyse de la complexitรฉ de Bubble Trier
Il existe trois types de complexitรฉ :
1) Trier la complexitรฉ
La complexitรฉ du tri exprime le temps d'exรฉcution et l'espace mรฉmoire nรฉcessaires pour trier une liste. Le tri ร bulles effectue (n โ 1) itรฉrations pour trier la liste, oรน n reprรฉsente le nombre total d'รฉlรฉments.
2) Complexitรฉ temporelle
La complexitรฉ temporelle du tri ร bulles est O(n2).
Les complexitรฉs temporelles peuvent รชtre classรฉes comme suit :
- Pire cas โ cโest ici que la liste fournie est par ordre dรฉcroissant. L'algorithme effectue le nombre maximum d'exรฉcutions qui est exprimรฉ par [Big-O] O(n2).
- Meilleur cas โ cela se produit lorsque la liste fournie est dรฉjร triรฉe. L'algorithme effectue le nombre minimal d'exรฉcutions, exprimรฉ par ฮฉ(n).
- Cas moyen โ cela se produit lorsque la liste est dans un ordre alรฉatoire. La complexitรฉ moyenne est reprรฉsentรฉe par [Big-theta] โ(n2).
3) Complexitรฉ spatiale
La complexitรฉ spatiale mesure l'espace supplรฉmentaire nรฉcessaire au tri de la liste. Le tri ร bulles ne requiert qu'un seul espace supplรฉmentaire (1) pour la variable temporelle utilisรฉe pour l'รฉchange.ping valeurs. Par consรฉquent, sa complexitรฉ spatiale est de O(1).
















