python快速排序算法实现 'int' object is not iterable
#-*- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
谢谢 araraloren!
哦,我找到了错误所在。一个低级错误return quicksort(forehalf)+list(numbers[0])+quicksort(endhalf)中,list(numbers[0])是非法的,应该为:return quicksort(forehalf)+[numbers[0]]+quicksort(endhalf)