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