【问题标题】:selection sort in pythonpython中的选择排序
【发布时间】:2013-01-19 02:29:34
【问题描述】:

这是选择排序的代码,但它不打印排序列表。怎么显示?

badlist = input("Enter list: ")  
def select(badlist):  
        l = list[:]  
        sorted = []  
        while len(l):  
            lowest == l[0]  
            for x in l:  
                if x < lowest:  
                    lowest = x  
            sorted.append(lowest)  
            l.remove(lowest)  
        return sorted  
select(badlist)  

【问题讨论】:

  • 代码中没有打印语句试试print select(badlist)
  • 我想知道这里发生了什么l = list[:];不要将变量命名为与内置变量相同。 sorted = [] 然后sorted.append(lowest) 只是自找麻烦。
  • 为什么不简单地使用内置的sorted(list) 然后你可以让你的整个代码是:print sorted(input("Enter list: "))
  • 附带说明,您的实现似乎不正确。选择排序是一种 inplace 算法,因此您应该对已排序和未排序的部分使用一个列表(提示:交换最小和当前项目,而不是删除/追加)。

标签: python sorting selection-sort


【解决方案1】:

如果您在 Python shell 中键入 select(badlist) 应该会显示结果,但是如果您将脚本作为文件运行,则需要使用 print 语句,如 print select(badlist)

【讨论】:

    【解决方案2】:

    扩展我的评论:

    为什么不简单地使用内置的sorted(list) 然后你可以让你的整个代码是:

    print sorted(input("Enter list: "))

    【讨论】:

    • 我确定这是作业或家庭作业,他们不允许使用内置插件。
    • @BurhanKhalid 虽然可能是这种情况,但没有说明,无论如何,这个答案不仅适用于 OP,而且是任何来到 StackOverflow 寻找类似问题解决方案的人的答案到 OP 并找到此页面。不将其作为答案是错误的。
    【解决方案3】:

    使用print

    如果您使用的是 Python 2.x,print 是关键字:

    result = select(badlist)
    print result
    

    在 Python 3.x 中,print 是一个函数,您必须使用括号:

    result = select(badlist)
    print(result)
    

    您还有至少两个其他错误:

    • 您的函数参数称为badlist,但您从不使用它。
    • == 运算符是相等比较。您需要 = 进行分配。

    而且你的算法会很慢,需要 O(n2) 次操作。

    【讨论】:

    • 它产生一个 TypeError: 'type' object has no attribute 'geitem' :(
    • 我明白了。非常感谢:)
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2018-11-07
    • 2013-04-25
    相关资源
    最近更新 更多