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.

  • (I.e. Mรฉcanisme de base : BubblLa fonction e sort compare chaque paire d'รฉlรฉments adjacents et les รฉchange, en poussant la plus grande valeur non triรฉe ร  sa position finale aprรจs chaque passage.
  • โš™๏ธ Variante optimisรฉe : Une variable indicateur dรฉtecte lorsqu'un passage n'effectue aucun รฉchange, interrompant la boucle prรฉmaturรฉment afin qu'une liste dรฉjร  triรฉe soit traitรฉe en une seule analyse.
  • (I.e. Python Mise en ล“uvre: Deux boucles imbriquรฉes et une variable temporaire trient la liste, et le tutoriel dรฉcrit le comportement exact de chaque ligne.
  • (I.e. Profil de complexitรฉ : La complexitรฉ temporelle est O(nยฒ) dans les pires et moyens cas, ฮฉ(n) dans le meilleur des cas, avec une exigence d'espace constante O(1).
  • (I.e. Meilleur ajustement : BubblL'algorithme e sort excelle pour l'enseignement et les listes presque triรฉes, mais ses performances sur les grands ensembles de donnรฉes sont mรฉdiocres comparรฉes ร  celles des algorithmes avancรฉs.

Bubble Algorithme de 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 :

Bubble Trier la liste non triรฉe

Premiรจre itรฉration

ร‰tape 1)

Bubble Tri comparant 21 et 6

Les valeurs 21 et 6 sont comparรฉes pour vรฉrifier laquelle est supรฉrieure ร  l'autre.

Bubble Trier l'รฉchangeping 21 et 6

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.

Bubble Trier la liste modifiรฉe aprรจs l'รฉchange

Notre liste modifiรฉe ressemble dรฉsormais ร  celle ci-dessus.

ร‰tape 2)

Bubble Tri comparant 21 et 9

Les valeurs 21 et 9 sont comparรฉes.

Bubble Trier l'รฉchangeping 21 et 9

21 est supรฉrieur ร  9, donc nous รฉchangeons les positions de 21 et 9.

Bubble Trier la nouvelle liste aprรจs l'รฉchange

La nouvelle liste est dรฉsormais celle ci-dessus.

ร‰tape 3)

Bubble Tri comparant 21 et 33

Les valeurs 21 et 33 sont comparรฉes pour trouver la plus grande.

Bubble Tri 33 supรฉrieur ร  21 pas d'รฉchange

La valeur 33 est supรฉrieure ร  21, donc pas d'รฉchangeping a lieu.

ร‰tape 4)

Bubble Tri comparant 33 et 3

Les valeurs 33 et 3 sont comparรฉes pour trouver la plus grande.

Bubble Trier l'รฉchangeping 33 et 3

La valeur 33 est supรฉrieure ร  3, on รฉchange donc leurs positions.

Bubble Trier la liste triรฉe aprรจs la premiรจre itรฉration

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 :

Bubble Trier la liste aprรจs la deuxiรจme itรฉration

Troisiรจme itรฉration

La nouvelle liste aprรจs la troisiรจme itรฉration est la suivante :

Bubble Trier la liste aprรจs la troisiรจme itรฉration

Quatriรจme itรฉration

Voici la nouvelle liste aprรจs la quatriรจme itรฉration :

Bubble Trier la liste entiรจrement triรฉe 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 :

Bubble Trier Python explication du code

ICI,

  1. Dรฉfinit une fonction bubbleSort qui accepte un paramรจtre theSeq. Le code ne produit rien.
  2. Rรฉcupรจre la longueur du tableau et assigne cette valeur ร  une variable n. Le code n'affiche rien.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Si la condition est vraie, la valeur de theSeq[j] est affectรฉe ร  la variable temporaire tmp. Ce code ne produit aucun affichage.
  8. La valeur de theSeq[j + 1] est affectรฉe ร  la position de theSeq[j]. Le code ne produit aucun rรฉsultat.
  9. La valeur de la variable tmp est affectรฉe ร  la position theSeq[j + 1]. Le code ne produit aucun rรฉsultat.
  10. La variable indicateur prend la valeur 1 pour signaler qu'un รฉchange a eu lieu. Le code n'affiche rien.
  11. Utilise une instruction if pour vรฉrifier si la valeur de la variable flag est 0. Le code n'affiche rien.
  12. Si la valeur est 0, alors nous appelons l'instruction break qui sort de la boucle interne.
  13. Renvoie la valeur de theSeq aprรจs son tri. Le code gรฉnรจre la liste triรฉe.
  14. Dรฉfinit une variable el qui contient une liste de nombres alรฉatoires. Le code ne produit rien.
  15. Attribue la valeur de la fonction bubbleSort ร  un rรฉsultat variable.
  16. 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).

FAQ

BubblLe tri ร  bulles est rarement utilisรฉ en production dans les systรจmes d'IA, mais il permet d'enseigner la logique de tri lors de la prรฉparation des donnรฉes. Les pipelines d'apprentissage automatique trient les caractรฉristiques, les scores et les prรฉdictions ร  l'aide d'algorithmes plus rapides, mais le tri ร  bulles clarifie le concept de comparaison et d'รฉchange pour les dรฉbutants.

Oui. Les assistants IA peuvent รฉcrire du tri ร  bulles. Python, Java, C++ et ajouter l'optimisation par drapeau qui s'arrรชte prรฉmaturรฉment sur une liste triรฉe. Ils peuvent รฉgalement suggรฉrer des algorithmes plus rapides lorsque l'ensemble de donnรฉes devient volumineux.

On l'appelle tri ร  bulles car les valeurs les plus รฉlevรฉes ยซ remontent ยป progressivement vers la fin de la liste ร  chaque passage, un peu comme des bulles d'air qui remontent ร  la surface de l'eau, tandis que les valeurs les plus faibles descendent vers le dรฉbut.

BubblLe tri s'exรฉcute en temps O(nยฒ), ce qui est beaucoup plus lent que le tri rapide et le tri fusion ร  O(n log n). BubblLe tri รฉlectronique convient aux petits exemples ou aux exemples pรฉdagogiques, tandis que le tri rapide et le tri fusion gรจrent efficacement les grands ensembles de donnรฉes rรฉelles.

Rรฉsumez cet article avec :