ソートアルゴリズムを挿入仕分け----

挿入ソート

  挿入ソートの主なアイデアは、リスト内のリストの要素を取る時間リストセクションは、比較ソート、次いで得られた新しいソートされたリストのセクション、最終的にソートされたリストを挿入されています。   

  例えば、リストは、赤色、[49,38,65,97,76,13,27,49]、新しいリストとリストとを比較するステップは以下の通り:(背景色を有するセグメントが既にソートされ得るソートします背景挿入ラベルを行うと交換素子れます)

       

  

1  「」 " 
2  挿入ソート:サブ要素と前部要素のソートされていないリストを比較良い順序リストにあった選択;
 3      (1)方法1:フロントからリア比較に
 4          現在の要素が前部よりも小さい要素の値をソートした場合、後退のソートされた要素からの位置、現在の要素が挿入!
 5          注:!前方に後方から後方に移動する
 6      (2)第二の方法:から転送
 7          場合を最後の値の要素を注文する前は小さいよりも、現在の要素、交換位置、およびそれ以前の比較を続けると、小型であれば、ほとんどのフロントまで交流がない要素!
 8  「」 " 
9  
10  
11  1の方法:の良い順序を持っていますコンパレータ前後から要素
12である DEFのinsert_sort(int_list):
 13である、      長さ= LEN(int_list)
 14      IF。長さ<= 1:リターンint_list
 15      のための I における範囲(1。、長さ):
 16          項目= int_list [I]
 17。         ための J レンジ(I):
 18は             IF項目< int_list [J]:
 19                  のための K における範囲(I、J、-1 ):
 20である                      int_list [K] = int_list [K - 1 ]
 21である                  = int_list [J] 項目
 22は、                 BREAK 
23れる     返すint_list
 24  
25  
26である #の方法:バックコンパレータからの要素の良い順持って
27  DEFのinsert_sort2(int_list):
 28      長さ= LENを(int_list )
29      であれば長さ<= 1:戻りint_list
 30      のための I における範囲(1 、長さ):
 31          ながら、 I> 0:
 32              であれば int_list [I] <int_list [I - 1 ]:
 33                  int_list [i]は、int_list [I - 1] = int_list [iが- 1 ]、int_list [I]
 34                  I - = 1
 35              36                  休憩
37      リターンint_list
 38  
39  
40  プリント(insert_sort([11、3、5、89、1,23456,87678、 2345,4567,0,3,5]))
41  プリント(insert_sort2([11 ,. 3 ,. 5、89、1,23456,87678,2345,4567,0,3,5]))
42は、 IF  __name__ == ' __main__ ' 43である      (int_str = INPUT " カンマ区切りを入力してください整数>>> " ).strip()
 44である      int_list = INT(I)のために I (int_str.split " " )]
 45      #の印刷(insert_sort(int_list))
46は、     プリント(insert_sort2(int_list))

 

おすすめ

転載: www.cnblogs.com/open-yang/p/11367086.html