A bubble sort repeatedly goes through a list, comparing neighbouring values and swapping them if they are out of order.
After each pass through the list, the highest remaining value has “bubbled” through the list to its correct location, so the size of the remaining list to be sorted is reduced by 1.
If no swaps are carried out on a pass, then the sorting can stop.
General Algorithm
DECLARE n INITIALLY length(list) DECLARE swapped INITIALLY TRUE WHILE swapped AND n >= 0 SET swapped TO False FOR i = 0 to n-2 DO IF list[i] > list[i+1] THEN SET temp TO list[i] SET list[i] TO list[i+1] SET list[i+1] TO temp SET swapped TO TRUE END IF END FOR SET n TO n - 1 END WHILE
listsize = length(list) swapped = True # as long as previous loop had a swap, and unsorted part of list is not empty WHILE swapped AND listsize >= 0: # new iteration, so reset swaps swapped = False # go through the unsorted part of the list for i in range(listsize-1): #if current value is bigger than next value if list[i] > list[i+1]: #swap the values temp = list[i] list[i] = list[i+1] list[i+1] = temp swapped = True #the unsorted part of the list is now smaller listsize -= 1
Swapping List Values
Most languages need the use of a temporary variable to swap two values. This is part of the AH course.
temp = list[i] list[i] = list[i+1] list[i+1] = temp
Python can do this in one command:
list[i], list[i+1] = list[i+1], list[i]
In programmer interviews, one task might be to swap two numbers without the use of a temporary variable. This solution works, but requires several calculations:
x = 3 y = 5 x = x + y # x = 3 + 5 = 8 y = x - y # y = 8 - 5 = 3 x = x - y # x = 8 - 3 = 5