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