Bubble sort is sorting techniques that mimic bubbles. The idea is when you sort in ascending order, the smaller data will "bubble up" to the lower index -- or alternatively -- the larger data will "sink down" to the larger index. Try to step through the trace below with the bubble sort algorithm (that looks something like this): For i := 1 To maxarray - 1 do For j := i + 1 to maxarray do If a[i] > a[j] Then begin temp := a[j]; a[j] := a[i]; a[i] := temp; End; Starting: 7 3 5 6 2 : maxarray = 5, i = 1 Look into the loop j: j = 2: a[i] > a[j]? ==> a[1] > a[2]? ==> 7 > 3, so swap: 3 7 5 6 2 j = 3: a[i] > a[j]? ==> a[1] > a[3]? ==> 3 > 5, no swap j = 4: a[i] > a[j]? ==> a[1] > a[4]? ==> 3 > 6, no swap j = 5: a[i] > a[j]? ==> a[1] > a[5]? ==> 3 > 2, so swap: 2 7 5 6 3 [2] 7 5 6 3 : i = 2 Look into the loop j: j = 3: a[i] > a[j]? ==> a[2] > a[3]? ==> 7 > 5, so swap: 2 5 7 6 3 j = 4: a[i] > a[j]? ==> a[2] > a[4]? ==> 5 > 6, no swap j = 5: a[i] > a[j]? ==> a[2] > a[5]? ==> 5 > 3, so swap: 2 3 7 6 5 [2 3] 7 6 5 : i = 3 Look into the loop j: j = 4: a[i] > a[j]? ==> a[3] > a[4]? ==> 7 > 6, so swap: 2 3 6 7 5 j = 5: a[i] > a[j]? ==> a[3] > a[5]? ==> 6 > 5, so swap: 2 3 5 7 6 [2 3 5] 7 6 : i = 4; Look into the loop j: j = 5: a[i] > a[j]? ==> a[4] > a[5]? ==> 7 > 6, so swap: 2 3 5 6 7 [2 3 5 6 7] We're done! Well, you can observe that smaller data is bubbling up. This is some sort of bubble sort (but not the original version). This version (i.e. mine) is a lot easier to remember.
Roby Joehanes, © 2001