1035を挿入し、マージ(25分)

Wikipediaの定義によると:

挿入ソートは、いずれかによって入力データ1を得る徐々に順序付けられた出力シーケンスを生成するために、反復アルゴリズムです。各反復アルゴリズム入力シーケンスから採取された要素は、順序付けられたシーケンス内の正しい位置に挿入します。だから、順序内のすべての要素になるまで反復。

反復マージソートのアクションを以下:まず、Nの元のシーケンスとして一つだけの要素が含まれている、と注文したマージの各反復2つの隣接する配列、注文最後まで一つだけのサブシーケンスを命じましたシーケンス。

今、元の配列とソートアルゴリズムによって生成された中間のシーケンスを与えられ、アルゴリズムは、ソートアルゴリズムのかどうか、あなたがどのような種類を決定しますか?

入力フォーマット:

入力の最初の行では、正の整数N(与えられ≦100)、続いてN個の整数の元の配列の列を与え、最後の行は、ソートアルゴリズムの中間体によって生成されたシーケンスを与えます。標的配列が昇順にソートされているものとします。スペースで区切られた数字の間。

出力フォーマット:

第一出力線1は、Insertion Sort挿入ソートを表し、またはMerge Sortマージソートを表し、次いでランク付けアルゴリズムは、2行目の結果のシーケンスを繰り返し出力します。トピックは、各テストの結果が一意であることを確認してください。数字の間にスペースで区切って、最初から最後までのラインは、余分なスペースを持っていないかもしれません。

サンプル入力1:

10
3 1 2 8 7 5 9 4 6 0
1 2 3 7 8 5 9 4 6 0

出力サンプル1:

Insertion Sort
1 2 3 5 7 8 9 4 6 0

サンプル入力2:

10
3 1 2 8 7 5 9 4 0 6
1 3 2 8 5 7 4 9 0 6

出力サンプル2:

Merge Sort
1 2 3 8 4 5 7 9 0 6

#include <iostreamの> 
する#include <アルゴリズム>
 使用して 名前空間STD;
 INT N-、
 ボイド insort(INT A []、int型B []){
     int型キー= 0 ;           // 1中間シーケンス、キーセットに嵌合し、プロセスラインの終了後出力におけるスケジューリング
    のためのint型 I = 2 ; I <= N; Iは++){         // 挿入ソートを通過することなく2、末端がNであり、そうでなければテストポイント2を起動 
        (A +、AソートI) ;
         IF (キー){ 
            COUT << " 挿入ソート" << ENDL; 
            COUT<< [ 0 ];
             のためのINT J = 1 ; J <N- J ++ 
                COUT << "  " << [J];
             リターン; 
        } 
        IF(等しい(A、+ N-A、B))   // アレイの機能を比較して等しい 
            キー= 1 ; 
    } 
} 
ボイド mesort(INT []、int型B []){
     int型キー= 0 ;
     のためのINT I = 2 ;; I * = 2){    // ここで状態を終了していない、なぜならN-ソート時i>は再び繰り返されたとき
        のためにINT J = 0 ; J <N - 、= J + I){ 
            ソート(A + J、A +(J +私は<N-I + J :? N-));   // 決定注境界を
        }
         IF (キー){ 
            COUT << " マージソート" << ENDL; 
            COUT << [ 0 ];
             のためのINT J = 1。 ; J <N-; J ++ 
                COUT << "  " << [J]。
            返します
        } 
        場合(等しい(+ N、B))
            キー = 1 もし(I> n)を
             破ります
 
    } 
} 
int型のmain(){ 
    CIN >> N。
    INT A1 [ 100 ]、[A2 100 ]、[B 100 ]。
    以下のためにint型 i = 0 ; iがn <; iは++ ){ 
        CIN >> A1 [i]は、
        A2 [I] =のA1 [I]; 
    } 
    のためにint型私= 0 ; 私は、n <; 私は++ 
        CIN >> B [I]を、
    insort(A2、B)。
    mesort(A、B)。
    リターン 0 ; 
}

ソースコード:https://blog.csdn.net/qq_40946921/article/details/81293371

 

おすすめ

転載: www.cnblogs.com/TBhacker/p/11203666.html