ソートpythonの選択

1614 ワード

一、概念及び原理選択ソート(Selection sort)は簡単で直感的なソートアルゴリズムである.その動作原理は以下の通りです.まず、ソートされていないシーケンスで最小(大)要素を見つけ、ソートされたシーケンスの開始位置に保存し、残りのソートされていない要素から最小(大)要素を探し続け、ソートされたシーケンスの最後に配置します.すべての要素がソートされるまで、このようにします.
ソートを選択する主な利点は、データ移動に関連しています.エレメントが正しい最終位置にある場合、エレメントは移動されません.ソートを選択すると、1対のエレメントが交換され、そのうちの少なくとも1つが最終位置に移動するため、n個のエレメントのテーブルがソートされ、合計n-1回まで交換されます.要素を交換して移動するすべてのソート方法では、ソートを選択するのは非常に良い方法です.二、分析及び実現は簡単に言えば、シーケンスサイクルは最大又は最小値をシーケンスの前に置く.実は泡と少し似ていて、サイクルごとにサイクルシーケンスの最値を見つけて一番右に置いてソートを完了します.昇順で例を挙げる:1.変数min_でnumは最小値の記録を行い、初期値はシーケンスの1番目に設定.右のシーケンスループで最小値を見つけ、min_とnum交換3.ソートされていないヘッダ要素と交換4.min_を再numはソートされていないシーケンスの1番目に決定されます
 for i in range(len(alist)-1):  # i:  0 ~ n-2
        min_num = alist[i]  #                             
        for j in range(i+1, len(alist)):
            if alist[j] < min_num:
                alist[j], min_num = min_num, alist[j]
        alist[i], min_num = min_num, alist[i]
    return alist

完全なコード:


def select_sort(alist):
    count = 0
    for i in range(len(alist)-1):  # i:  0 ~ n-2
        min_num = alist[i]  #                         
        for j in range(i+1, len(alist)):

            if alist[j] < min_num:
                alist[j], min_num = min_num, alist[j]
                count += 1

        alist[i], min_num = min_num, alist[i]
    return alist,count

def main():
    alist = [2,5,7,9,4,1,5,7,3,5,86,45,221,10]
    print(select_sort(alist))
    listA = [2,5,8,4,9,5,1,4]
    print(select_sort(listA))

if __name__ == '__main__':
    main()

バブルソートと比較すると、比較回数と同様に、ソートの選択は実際のソート対象シーケンスの影響が大きいことが分かった.