I'm really confused about how this code works.
Suppose the Inputs for the list are [ C, B, A, exit].
On the first "for" statement, it will swap around the list positions 0 and 1, which are C and B.
This would lead to a new list with [B, C, A]
However, why is it that on the second set of "for" statements, it would swap around A and B instead of C and A? This can be seen in the photo where the output says that it will swap B and A. I'm so confused as to why it would do that when it should be using positions 1 and 2 of the list instead.
I have tried hand-tracing the code and I always get that C and A should have swapped instead. Can someone help explain it to me? Thank you very much in advance
def bubble(alist):
count = 0
count2 = 0
for length in range(len(list)):
for i in range(len(list) - 1):
if list[i] > list[i + 1]:
print("Swapping", list[i + 1], list[length])
tmp = list[length]
list[length] = list[i+1]
list[i + 1] = tmp
list = []
while True:
val = input()
if val == "exit":
break
list.append(val)
counts = bubble(list)
print(list)
Picture of the output
Your comparison
if list[i] > list[i + 1]:
does not match your swap code
tmp = list[length]
list[length] = list[i+1]
list[i + 1] = tmp
Either change you comparison to
if list[i + 1] > list[length]
or change your swap code to
tmp = list[i + 1]
list[i + 1] = list[i]
list[i] = tmp
Also, you should really never use list
as a variable name as it is a built-in type.