Per rendere l'algoritmo più efficiente utilizzeremo una variabile, chiamata scambioeffettuato, che fungerà da flag. Essa sarà impostata a 0 inizialmente

system

e poi impostata al valore 1 se durante la scansione del vettore sarà stato effettuato almeno uno scambio.

system system

Alla fine di ciascuna scansione, se non è avvenuto alcuno scambio (cioè se la variabile scambioeffettuato sarà rimasta con il valore 0) vorrà dire che gli elementi sono tutti ordinati e l'algoritmo potrà terminare senza ulteriori confronti.

system