Logic for the Bubble Sort:

Assume that we are starting out with the numbers 5, 6, 2, 3, 4 in that order.

SUB1 will point to the first thing we want to compare and SUB2 will point to the second. END-PT is set to how many numbers we are checking - since we are starting out at 5 numbers END-PT is initially set to 5.

FLIP-CT is incremented every time we flip - if we go through an entire pass without flipping we can assume the sort to be done. Otherwise the sort is done when we have done 4 passes (because there are 5 numbers to be sorted).

Pass 1:

 BEFORE PROCESSING SUB1 SUB2 END-PT FLIP-CT AFTER 5 6 2 3 4 Initialize 1 2 5 0 5 6 2 3 4 5 6 2 3 4 Compare: SUB1 pts at 5 SUB2 pts at 6 5<6 leave alone 1 2 5 0 5 6 2 3 4 5 6 2 3 4 Compare: SUB1 pts at 6 SUB2 pts at 2 6 not < 2 so flip 2 3 1 5 2 6 3 4 5 2 6 3 4 Compare: SUB1 pts at 6 SUB2 pts at 3 6 not < 3 so flip 3 4 2 5 2 3 6 4 5 2 3 6 4 Compare: SUB1 pts at 6 SUB2 pts at 4 6 not < 4 so flip 4 5 3 5 2 3 4 6 5 2 3 4 6 SUB2>END-PT so pass complete 6 locked at end so 1 subtracted from END-PT for Pass 2 5 6

Pass 2:

 BEFORE PROCESS SUB1 SUB2 END-PT FLIP-CT AFTER 5 2 3 4 6 Initialize 1 2 4 0 5 2 3 4 6 5 2 3 4 6 Compare: SUB1 pts to 5 SUB2 pts to 2 5 not < 2 so flip 1 2 1 2 5 3 4 6 2 5 3 4 6 Compare: SUB1 pts to 5 SUB2 pts to 3 5 not < 3 so flip 2 3 2 2 3 5 4 6 2 3 5 4 6 Compare: SUB1 pts to 5 SUB2 pts to 4 5 not < 4 so flip 3 4 3 2 3 4 5 6 2 3 4 5 6 Compare: SUB1 pts to 5 SUB2 pts to 6 5<6 leave alone 4 5 2 3 4 5 6 2 3 4 5 6 SUB2>END-PT so pass complete 5 & 6 locked at end so 1 subtracted from END-PT for Pass 3 5 6

Pass 3:

 BEFORE PROCESS SUB1 SUB2 END-PT FLIP-CT AFTER 2 3 4 5 6 Initialize 1 2 3 0 2 3 4 5 6 2 3 4 5 6 Compare: SUB1 pts to 2 SUB2 pts to 3 2<3 leave alone 1 2 2 3 4 5 6 2 3 4 5 6 Compare: SUB1 pts to 3 SUB2 pts to 4 3<4 leave alone 2 3 2 3 4 5 6 2 3 4 5 6 SUB2>END-PT so pass complete 4 & 5 & 6 locked at end so 1 subtracted from END-PT for Pass 4 However no flips so no need for pass 4 - SORT ENDS 3 4 2 3 4 5 6