Otra optimización que puede hacerse es aprovechar que en un ciclo uno de los extremos se mueve directamente al final y realizar la misma tarea, pero en sentido inverso así en el siguiente ciclo tenemos el primer elemento ordenado, esto viene muy bien en el caso de que sean vectores parcialmente ordenados al que se agrega un único elemento desordenado al final. Tal cual como lo hacíamos con el último elemento, debemos ajustar también el extremo inferior en cada ciclo para hacer comparaciones redundantes. Y también contemplaremos el flag en el nuevo ciclo invertido. Ahora el diagrama será un poquito más complejo, pero no tanto.
Parece complejo, pero veamos un ejemplo completo hecho en pseudocódigo: