python - 这个排序代码有什么问题? Python

标签 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]

最佳答案

问题是 curr 应该在交换后改变。

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] # <--

关于python - 这个排序代码有什么问题? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291013/

相关文章:

python - 单个模块/函数等的文档字符串超过 1 个?

python - 如何在每个 Spark 执行器中加载无法 pickle 的数据?

java - 获取算法的运行时间

python - 大学类(class)高效排类

Python - 将元组添加到特定位置的现有元组列表

python - 在python中查找并替换多个值

c - 计算基数 4 中匹配数字数量的最快方法是什么?

python - 获取排序矩阵索引的简单方法

swing - 同时对两个 JTable 进行排序

javascript - JS : sort array by two fields