# Tri à bulle (troisième version)

Réintroduisons maintenant la petite optimisation que nous avions retiré à l'étape précédente : Si un parcours n'a rien inversé, c'est que le tableau est maintenant trié. Dans ce cas, il faut arrêter le processus de tri.

[!java|python|c]Pour cela, utilisez simplement le mot-clé `break>`, qui coupe l'exécution de la boucle englobante. Attention, si vous avez plusieurs boucles imbriquées, c'est celle situé tout au fond (au plus près du mot-clé break) qui est cassée.[/!] [!scala]Pour cela, quittez simplement la fonction courante en appelant `return` sans lui associer de valeur.[/!]

    Pour tout i dans [lgr-2,0] (parcours du plus grand au plus petit)
           Pour tout j dans [0, i]
              Si les cases j et j+1 doivent être inversées, le faire
           Si le parcours sur les j n'a rien inversé, casser la boucle

Cet optimisation est encore plus décevante : on ne gagne que quelques pour-cents en nombre de lectures sur BubbleSort2.