我正在尝试在python中编写所有排序算法的迭代和递归版本。 除了我没有退货的事实,这有什么问题?这是我切片的问题吗?
尝试解决方案:
def insertOne(element, aList):
''' Inserts element into its proper place in a sorted list aList.
input: element is an item to be inserted. aList is a sorted list.
output: A sorted list.
'''
if len(aList) == 0:
return [element]
elif element < aList[0]:
return [element] + aList
else:
return aList[0:1] + insertOne(element, aList[1:])
def sort(aList):
if len(aList) == 0:
return []
n = len(aList)
if n > 1:
sort(aList[:n - 1])
insertOne(n, aList)
aList = [3,2,1]
print sort(aList)
答案 0 :(得分:1)
您的sort
方法错误。 n
是aList
的长度,而不是元素。你不希望把它放在列表中,这就是你用insertOne(n, aList)
做的事情。
你想要做的是:
def sort(aList):
if len(aList)<=1:
return aList
else:
return insertOne(aList[0], sort(aList[1:]))
基本上,您正在浏览aList
,并使用insertOne
将您遇到的每个元素插入正确的位置。