Bubble Algorithme de tri avec Python en utilisant un exemple de liste
Qu'est-ce que la Bubble Trier ?
Bubble Trier est un algorithme de tri utilisรฉ pour trier les รฉlรฉments d'une liste par ordre croissant en comparant deux valeurs adjacentes. Si la premiรจre valeur est supรฉrieure ร la deuxiรจme valeur, la premiรจre valeur prend la deuxiรจme position de valeur, tandis que la deuxiรจme valeur prend la premiรจre position de valeur. Si la premiรจre valeur est infรฉrieure ร la deuxiรจme valeur, aucun รฉchange n'est effectuรฉ.
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 tu vas apprendre:
Mettre en ลuvre le Bubble Algorithme de tri
Nous dรฉcomposerons 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 souhaitons les organiser 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 si la premiรจre valeur est supรฉrieure ร la deuxiรจme valeur.
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 de liste moins un
รtape 3) Effectuez des passes internes (n โ 1) fois pour la passe externe 1. Obtenez la valeur du premier รฉlรฉment et comparez-la avec la deuxiรจme valeur. Si la deuxiรจme valeur est infรฉrieure ร la premiรจre valeur, รฉchangez les positions
รtape 4) Rรฉpรฉtez les passes de lโรฉtape 3 jusquโร atteindre la passe extรฉrieure (n โ 1). Obtenez l'รฉlรฉment suivant de la liste, puis rรฉpรฉtez le processus effectuรฉ ร l'รฉtape 3 jusqu'ร ce que toutes les valeurs aient รฉtรฉ placรฉes dans leur ordre croissant correct.
รtape 5) Renvoie le rรฉsultat lorsque toutes les passes ont รฉtรฉ effectuรฉes. Renvoie les rรฉsultats de 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 se fait en suivant les รฉtapes suivantes
รtape 1) Crรฉez une variable d'indicateur qui surveille si un รฉchange a eu lieu dans la boucle interne
รtape 2) Si les valeurs ont permutรฉ leurs positions, passez ร l'itรฉration suivante
รtape 3) Si les bรฉnรฉfices nโont pas changรฉ de position, terminez la boucle interne et continuez 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 de leur 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, on รฉchange donc les positions de 21 et 9
La nouvelle liste est maintenant comme ci-dessus
รtape 3)
Les valeurs 21 et 33 sont comparรฉes pour trouver la plus grande.
La valeur 33 est supรฉrieure ร 21, aucun รฉchange n'a donc 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 comme 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
La nouvelle liste aprรจs la quatriรจme itรฉration est la suivante
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
[6, 9, 21, 3, 33]
Explication du code
L'explication du Python Bubble Le 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.
- Obtient la longueur du tableau et attribue la valeur ร une variable n. Le code ne produit rien
- Dรฉmarre une boucle for qui exรฉcute l'algorithme de tri ร bulles (n โ 1) fois. C'est la boucle externe. Le code ne produit rien
- Dรฉfinit une variable d'indicateur qui sera utilisรฉe pour dรฉterminer si un รฉchange a eu lieu ou non. Ceci est ร des fins d'optimisation. Le code ne produit rien
- 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.
- Attribue la valeur de theSeq[j] ร une variable temporelle tmp si la condition est รฉvaluรฉe comme vraie. Le code ne produit rien
- La valeur de theSeq[j + 1] est affectรฉe ร la position de theSeq[j]. Le code ne produit rien
- La valeur de la variable tmp est affectรฉe ร la position theSeq[j + 1]. Le code ne produit rien
- La variable flag reรงoit la valeur 1 pour indiquer qu'un รฉchange a eu lieu. Le code ne produit rien
- Utilise une instruction if pour vรฉrifier si la valeur de l'indicateur de variable est 0. Le code ne gรฉnรจre 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-uns des avantages de l'algorithme de tri ร bulles
- C'est facile ร comprendre
- Il fonctionne trรจs bien lorsque la liste est dรฉjร ou presque triรฉe
- 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-uns des 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 rรฉelles.
- 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 est utilisรฉe pour exprimer le temps d'exรฉcution et l'espace nรฉcessaire pour trier la liste. Le tri ร bulles effectue (n โ 1) itรฉrations pour trier la liste oรน n est le nombre total d'รฉlรฉments dans la liste.
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 minimum d'exรฉcutions qui est exprimรฉ par [Big-Omega] ฮฉ(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รฉ de l'espace mesure la quantitรฉ d'espace supplรฉmentaire nรฉcessaire pour trier la liste. Le tri ร bulles ne nรฉcessite qu'un (1) espace supplรฉmentaire pour la variable temporelle utilisรฉe pour รฉchanger les valeurs. Il a donc une complexitรฉ spatiale de O (1).
Rรฉsumรฉ
- L'algorithme de tri ร bulles fonctionne en comparant deux valeurs adjacentes et en les รฉchangeant si la valeur de gauche est infรฉrieure ร la valeur de droite.
- La mise en ลuvre dโun algorithme de tri ร bulles est relativement simple avec Python. Tout ce que vous devez utiliser sont des boucles for et des instructions if.
- Le problรจme rรฉsolu par lโalgorithme de tri ร bulles consiste ร prendre une liste alรฉatoire dโรฉlรฉments et ร la transformer en une liste ordonnรฉe.
- L'algorithme de tri ร bulles dans la structure de donnรฉes fonctionne mieux lorsque la liste est dรฉjร triรฉe car il effectue un nombre minimal d'itรฉrations.
- L'algorithme de tri ร bulles ne fonctionne pas bien lorsque la liste est dans l'ordre inverse.
- Le tri barboteur a une complexitรฉ temporelle de O (n2) et une complexitรฉ spatiale de O (1)
- Lโalgorithme de tri par barboteur est mieux adaptรฉ ร des fins acadรฉmiques quโร des applications du monde rรฉel.
- Le tri ร bulles optimisรฉ rend l'algorithme plus efficace en sautant les itรฉrations inutiles lors de la vรฉrification des valeurs dรฉjร triรฉes.
















