for iteration in range(len(list) - 1):
index = iteration +1 #This is the line which has no effect on the inner loop
for index in range(len(list)):
if list[iteration] > list[index]:
newmin = list[index]
newminindex = index
if iteration != newminindex :
swapnumbers(list,iteration, newminindex)
The above is a code snippet I wrote for selection sort algorithm. However I see the inner loop start counter always starting from 0. Request for expert comment.
The for index in range(len(list))
loop executes the loop body with index
first set to 0
, then 1
, then 2
, etc. up to len(list) - 1
. The previous value of index
is ignored and overwritten. If you want index
to start at iteration + 1
, use the 2-argument form of range
:
for index in range(iteration + 1, len(list)):
You really should be using enumerate
for stuff like this, as you can loop through the index and the value at the same time (which will save you the hassle of using two for-loops).
for i, j in enumerate(list):
print i, j
Your inner loop is overriding the variable index
that you defined in the first loop.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With