挿入ソートを学びます

、挿入ソートを理解するのは簡単、それはオリジナルのキューが常に列の値、ラインの外にされているすべての値と比較して、1つずつから、キューをジャンプして自分の位置を見つけることです。

さらに、中断コードは単一の関数を作るために、それに基づいて、次は自分の注釈といくつかのコードを学ぶための挿入ソートです。

以下は、挿入ソートのコードC ++です。

1つの#include <iostreamの>
 2  
3  使用して 名前空間STDを、
4  
5テンプレート< クラス T>
 6  ボイド挿入ソート(Tの* pを、INT LEN)。
7  
8  INT メイン()
 9  {
 10      のint [] = {Q 8574096231 }。
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 8574096231 }。
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 }

 

おすすめ

転載: www.cnblogs.com/yang901112/p/11330900.html