、挿入ソートを理解するのは簡単、それはオリジナルのキューが常に列の値、ラインの外にされているすべての値と比較して、1つずつから、キューをジャンプして自分の位置を見つけることです。
さらに、中断コードは単一の関数を作るために、それに基づいて、次は自分の注釈といくつかのコードを学ぶための挿入ソートです。
以下は、挿入ソートのコードC ++です。
1つの#include <iostreamの> 2 3 使用して 名前空間STDを、 4 5テンプレート< クラス T> 6 ボイド挿入ソート(Tの* pを、INT LEN)。 7 8 INT メイン() 9 { 10 のint [] = {Q 8、5、7、4、0、9、6、2、3、1 }。 11 挿入ソート(Q、10 )。 12 以下のために(int型 I = 0 ;私は< 10 ; I ++の) 13である { 14 COUT << Q [I] << ' ' ; 15 } 16 COUT << ENDLを、 17 リターン 0 ; 18である } 。19 20れるテンプレート< クラス T> 21であります ボイド挿入ソート(T * P、INT LEN) 22れる { 23は 、INT、待機LINE_UP; // LINE_UP列は、待機の総数示す 24 //の列インデックスが待機位置表す待つ 25 ため(=ウェイト1。 ;ウェイト<LEN、待機++ ) 26はある { 27 T TEM = P [待ち時間]; 28 LINE_UP =ウェイト; // 最後の列は、行の位置を示し 29 // 最初の挿入(キューにキューイングされていますそこLINE_UP値) 30 一方(LINE_UP> 0 && P [line_up- 1 ]> = TEM) 31である { 32 P [LINE_UP] = P [line_up- 1 ]; // 元の値が後退 33は line_up-- ; // TEMでき、次の吐出位置を見 34である } 35 P [LINE_UP] = TEM。// インデックス位置は、中断後に選択することができる 36 } 37 }
変更C ++コード
1つの#include <iostreamの> 2 3 使用して 名前空間STDを、 4 5テンプレート< クラス T> 6 ボイド挿入ソート(Tの* pを、INT LEN)。 7 8テンプレート< クラス T> 9 ボイド挿入(CONST T&M、T * bを、INT J)。 10 11 のint main()の 12 { 13 のint [] = {Q 8、5、7、4、0、9、6、2、3、1 }。 14 挿入ソート(Q、10 )。 15 のために(int型 I = 0 ; iが< 10 ; iが++ ) 16 { 17 COUT << Q [I] << ' ' 。 18 } 19 COUT << ENDL。 20 リターン 0 ; 21 } 22 23テンプレート< クラス T> 24 ボイド挿入ソート(Tの* pを、INTLEN) 25 { 26 のint LINE_UP、待ちます。 27 のため(=待つ1 ; <LEN待つ待機++ ) 28 { 29 TのTEM = P [待ち時間]。 30 インサート(TEM、P、待ちます)。 31 } 32 } 33 34テンプレート< クラス T> 35 ボイド挿入(CONST T&Mは、T * Bを、INT J) 36 { 37 のint I = J。 38 一方(I> 0 && B [I- 1]> = M) 39 { 40 B [i]は= bの[I- 1 ]。 41 i-- ; 42 } 43件の B [I] = M。 44 }