純粋なC ++イテレータを使用すると、マージソート書きます

純粋なイテレータを使用してC ++反復アルゴリズムで書かれた最初の試み、

ボイドマージ(ベクトル<整数> ::イテレータBEG、ベクトル<整数> ::イテレータ端){// 間隔をソート[BEG、エンド)
    IF(エンド- BEG <2)
        のリターン; 
    オート+ BEG = MID(エンド- BEG )/ 2; 
    マージ(BEG、MID)、
    マージ(MID、エンド); 
    // === === merge_begの
    ベクトル<整数> A(BEG、MID); //最初のサブベクトルを複製する、順序付けられたベクトルとして構成されています最初のサブベクトル占有する
    iter_a = a.begin()自動、iter_b =ミッド; // サブベクトルの開始位置の前と後のそれぞれイテレータ
    自動iter_c = BEG; //方向付けは、開始位置ベクトルを命じ
    (iter_a <ながらa.end()|| iter_b <エンド){ 
        IF(iter_b>エンド= ||(iter_a <a.end()&& * iter_a <iter_b *))
            * = iter_a iter_c ++ ++; 
        IF(iter_a> = a.end ()||(iter_b <終了&& * iter_a>Iter_b = *)) 
            * = * iter_b iter_c ++ ++;
    }
    // === === merge_end 
}

  

おすすめ

転載: www.cnblogs.com/yuanyb/p/11291613.html