int n = array.length;
while(n > 0){
for(int i = 1; i < array.length; i++){
if(array[i] <= array[i-1]){
int left = array[i-1];
int right = array[i];
array[i] = left;
array[i-1] = right;
}
}
n--;
}
Im schlechtesten Fall ist die Ordnung genau umgekehrt und man muss n-1 mal alle möglichen Vertauschungsprozesse (for-Schleife) nach rechts durchführen.
Stabilität - also gleiche Werte quasi unvertauscht - wird durch <= anstatt bloß < als Bedungung bewirkt.
Mach dir nun klar, warum das Austauschen funktioniert und warum genau n-1 mal durchgegangen wird, und warum "while" und "for" dazu passen.