Using pure C ++ iterator write merge sort

The first attempt written in C ++ iterative algorithm, using pure iterator

void mergeSort (vector <int> :: iterator beg, vector <int> :: iterator end) {// Sort the interval [BEG, End) 
    IF (End - BEG <2) 
        return; 
    Auto + BEG = MID (End - BEG ) / 2; 
    mergesort (BEG, MID); 
    mergesort (MID, End); 
    // === === merge_beg 
    vector <int> A (BEG, MID); // duplicating the first subvector, is configured as an ordered vector to occupy the first subvector 
    auto iter_a = a.begin (), iter_b = mid; // iterator respectively before and after the starting position of a sub-vector 
    auto iter_c = beg; // directed ordered vector starting position 
    while (iter_a < a.end () || iter_b <End) { 
        IF (iter_b> End = || (iter_a <a.end () && * iter_a <iter_b *)) 
            * * = iter_a iter_c ++ ++; 
        IF (iter_a> = a.end () || (iter_b <end && * iter_a>Iter_b = *)) 
            * = * iter_b iter_c ++ ++;
    }
    // === === merge_end 
}

  

Guess you like

Origin www.cnblogs.com/yuanyb/p/11291613.html