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]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, quitez simplement la fonction courante en appellant
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 inverser, 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 pourcents en nombre de lectures sur BubbleSort2.