names = ['James','Adam','Ross','Bryce','Sue','Matt','Chris','Sarah','Rachel','Aron']
def sort(names):
less = []
equal = []
greater = []
if len(names) > 1:
pivot = names[0]
for x in names:
if x < pivot:
str(less.append(x))
elif x == pivot:
str(equal.append(x))
elif x > pivot:
str(greater.append(x))
return sort(less) + sort(equal) + sort(greater)
else:
if len(names) == 1:
return names
print sort(names)
每当我运行此,它返回此错误:尝试快速排序,返回TypeError。
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'.
有人能告诉我是什么了吗?我对Python非常陌生
只是一个提示,因为你的'equal'列表中的所有内容都等于pivot,所以它不需要排序,并且可以简单地添加到中心,使得你有'return sort(less)+ equal +排序(更大)' – Adam
另一个提示,快速排序有一个'就地'的好处。所以可以通过交换值在单个列表中完成。相反,这个代码在递归发生时正在创建大量新列表。 – Billiska