python快速排序算法实现 'int' object is not iterable

发布于 2022-09-02 00:46:07 字数 910 浏览 20 评论 0

#-*- coding:utf-8 -*-
import math
import random
import time
import sys

def quicksort(numbers):
#快速排序:
    if numbers==[]:
        return []
    else:
        forehalf=[]
        endhalf=[]
        for i in range(1,len(numbers)):
            if numbers[i]<numbers[0]:
                forehalf.append(numbers[i])
            else:
                endhalf.append(numbers[i])
        return quicksort(forehalf)+list(numbers[0])+quicksort(endhalf)

def main():
    sys.setrecursionlimit(100000)
    numbers=[]
    for i in range(100):
        numbers.append(int(round(random.random()*20000)))
    starttime=time.clock()
    a=quicksort(numbers)
    print a
    endtime=time.clock()
    print "排序历时:",endtime-starttime,"s"

if __name__=="__main__":
    main()

运行结果总是提示:quicksort函数最后一行错误,错误提示为:TypeError: 'int' object is not iterable
有人能帮忙看下是什么问题吗?多谢!(注:python版本-Python 2.7.10)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱,才寂寞 2022-09-09 00:46:07

谢谢 araraloren!
哦,我找到了错误所在。一个低级错误return quicksort(forehalf)+list(numbers[0])+quicksort(endhalf)中,list(numbers[0])是非法的,应该为:return quicksort(forehalf)+[numbers[0]]+quicksort(endhalf)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文