递归插入在python中排序

时间:2013-08-06 01:49:04

标签: python sorting

我正在尝试在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)  

1 个答案:

答案 0 :(得分:1)

您的sort方法错误。 naList的长度,而不是元素。你不希望把它放在列表中,这就是你用insertOne(n, aList)做的事情。

你想要做的是:

def sort(aList):
  if len(aList)<=1:
    return aList
  else:
    return insertOne(aList[0], sort(aList[1:]))

基本上,您正在浏览aList,并使用insertOne将您遇到的每个元素插入正确的位置。