这个排序代码有什么问题?蟒蛇

时间:2016-05-18 05:30:36

标签: python algorithm sorting

所以我应该接受一个数字n,在列表中添加n个数字,然后对列表进行排序并打印。

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);

代码无法正常运行。我们还没有彻底学习排序算法,所以我只是自己制作,但它类似于我认为的选择排序。无论如何,为什么不按升序打印值?

编辑:输入4,然后输入清单4,3,2,1。输出为[1,4,4,4]

4 个答案:

答案 0 :(得分:1)

交换后问题是beginSheet:completionHandler应该改变。

let session:NSModalSession = NSApp.beginModalSessionForWindow(progSheet)

答案 1 :(得分:1)

更改此部分代码

 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;

对此:

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

答案 2 :(得分:0)

您可以更轻松地解决列表排序问题,只需使用sort命令,这里有一个示例:

import random

a=random.sample(range(30), 10)
print a
a.sort()
print a

答案 3 :(得分:0)

欢迎你 -

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

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

问题是你没有改变cur的值来正确比较。

编辑 - 刚刚看到其他答案击败了我:(

相关问题