DChalo DChalo - 6 months ago 8
Python Question

What is wrong with this sorting code? Python

So i'm supposed to take in a number n, add n numbers to a list, then sort the list and print.

numCol=int(input());
vals=[];
for x in range(numCol):
vals.append(int(input()))

for x in range(len(vals)):
curr=vals[x];
for y in range(x+1,len(vals)):
if(curr>vals[y]):
temp=vals[y];
vals[y]=curr;
vals[x]=temp;
print(vals);


the code doesn't work properly. We haven't learned sorting algorithms thoroughly really yet, so i'm kinda just making my own, but it resembles selection sort I think. Anyways, why is it not printing the values in ascending order?

Edit: I input 4, then make list 4, 3, 2, 1. Output is [1, 4, 4, 4]

Answer

the problem is curr should change after swap.

for x in range(len(vals)):
    curr=vals[x];
    for y in range(x+1,len(vals)):
        if(curr > vals[y]):
            temp = vals[y]
            vals[y] = curr
            vals[x] = temp
            curr = vals[x] # <--
Comments