1

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)  
4

1 に答える 1

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

于 2013-08-06T02:21:06.350 に答える