0

Pythonには組み込み関数がたくさんあることは知っていますが、アルゴリズムを理解しようとしているため、組み込みを最小化する選択ソートをコーディングしてみました。出力が選択ソートに対して正しくありません。どんな助けでも大歓迎です!前もって感謝します。

def selection_sort(list):
    for index in range(0, len(list)):
        for i in range(index,len(list)):
            iSmall = index

            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])
4

1 に答える 1

5

iSmall = index場違いです。すべてのコメンターが言及したことについては言及していませんが、これはすべて真実です(この編集の時点で)。したがって、iSmall = index適切な場所にあるコードは次のとおりです。

def selection_sort(list):
    for index in range(0, len(list)):
        iSmall = index
        for i in range(index,len(list)):
            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])

言い換えれば、あなたは最小数へのインデックスを探しています (そしてそれを に格納しようとしていますが、ループの繰り返しごとに にiSMallリセットiSmallしています。したがって、 は正しく設定されず、常に に設定されます。内側のループの最後の繰り返しで、別のものに変更されます。indexfor i in range(index,len(list)):iSmallindex

于 2013-04-01T23:57:50.790 に答える