データ構造とアルゴリズム - ソートアルゴリズム - 挿入ソート

 ##################挿入ソート####################

「」 " 

挿入アルゴリズム:
連想リスト= [54,26,93,17,77,31,44,55,20] 
または配列は、2つの部分に分割され、
始める最初の番号が注文され、連想リスト= [54、26,93,17,77,31,44,55,20] 
第一ラウンド、第二の部分と最後の比較の第一の部分、それは小さな交換である場合、連想リスト= [26,54 93 、17,77,31,44,55,20] 
小さな交換を必要に応じて、第一の部分の比較のための最初と最後の第二ラウンド、第2の部分より小さくを交換し、次に前方、及び、
合計が第一次達成することである、と終了、知って、比較した後に前方正面から持つように

選択ソート、挿入ソート比較を:
挿入最初のソートが第二の部分から除去され、第1の部分と、次に新たに比較する尾、その後に挿入され、
および異なる選択ソートは、選択ソートは、選択ソートされており、二つの部分に分け、それは比較の背後にある、最小値と比較することと、最初の最後部に挿入されています

「」"

 

 

##################挿入ソート####################

#初版:
DEF insert_sort(連想リスト):
    N- = LEN(連想リスト)
    の範囲内のJ(1、N - ):
        私は= Jは、
        I> 0つつ:
            連想リストIF [I] <連想リスト[-I 1。]:
                連想リスト[ I]、連想リスト[-I 1] =連想リスト[-I 1]、連想リスト[I]。。
                I - 1 =。
            他:
                この1缶なしのBREAK#が、秩序のための最適な時間の複雑さを最適化することができ、キューの複雑さ、内層は1となる、


#第二版:
DEFのinsert_sort2(連想リスト):
    第二の位置から#、すなわち、要素は前方に挿入される1つの開始標識
    範囲(1、LENにiについて(連想リスト)): はi番目の要素から前方比較開始は、位置切り替え、少ない前の要素よりも
        、J(I、0範囲のため-1):
            IF連想リスト[J] <連想リスト[-J 1。]:
                連想リスト[J]、連想リスト[J -1] =連想リスト[J-1]、連想リスト[J]
 
アウターループの#すべての要素が第二の部分から取り出されることを保証することです
#インナーループは、小さなを交換場合、値は、再び比較から取り出すことを確実にすることである


IF __name__ ==「__main__」:

    連想リスト= [54,26,93,17,77,31,44,55、 20]である
    プリント(連想リスト)
    insert_sort(連想リスト)
    プリント(連想リスト)

 

おすすめ

転載: www.cnblogs.com/andy0816/p/12348380.html
おすすめ