挿入ソート
挿入ソートの主なアイデアは、リスト内のリストの要素を取る時間リストセクションは、比較ソート、次いで得られた新しいソートされたリストのセクション、最終的にソートされたリストを挿入されています。
例えば、リストは、赤色、[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))