插入排序还是归并排序


 

 这题考察的就是数据结构里面的插入排序和归并排序的每一步的操作和流程。

可惜我太菜了。考试的时候做不出来!

#include 
using namespace std;
const int N = 110;
int a[N], b[N];
int n;
int main() {
    cin >> n;
    for(int i = 0; i < n; i++) cin >> a[i];
    for(int i = 0; i < n; i++) cin >> b[i];
    int flag = 0, i, j;
    for(i = 0; i < n - 1; i++) {
        if(b[i] > b[i+1]) break;
    }
    for(j = i + 1; j < n; j++) {
        if(a[j] != b[j]) break;
    }
    if(j==n) {
        cout << "Insertion Sort" << endl;
        sort(a, a+i+2);
        for(int j = 0; j < n; j++) {
            if(j) cout << " ";
            cout << a[j];
        }
    } else {
        cout << "Merge Sort" << endl;
        int k = 1;
        flag = 1;
        while(flag) {
            flag = 0;
            for(int j = 0; j < n; j++) {
                if(a[j] != b[j]) flag = 1;
            }
            k <<= 1;
            for(int j = 0; j < n / k; j++) {
                sort(a+j*k,a+(j+1)*k);
            }
            sort(a+n/k*k,a+n);
        }
        for(int j = 0; j < n; j++) {
            if(j) cout << " ";
            cout << a[j];
        }
    }
    return 0;
}