归并排序,求调
  • 板块学术版
  • 楼主Nancy_Cherry
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/1 09:57
  • 上次更新2023/11/2 16:50:47
查看原帖
归并排序,求调
911439
Nancy_Cherry楼主2023/10/1 09:57

rt

#include <iostream>
using namespace std;
int a[100005];
void h(int l1,int l2,int r1,int r2) {
    int c[100005],t = 0;
    int x1 = l1,x2 = l2;
    while(x1 <= r1 && x2 <= r2) {
        if(a[x1] <= a[x2]) c[t++] = a[x1++];
        else c[t++] = a[x2++];
    }
    while(x1 <= r1) c[t++] = a[x1++];
    while(x2 <= r2) c[t++] = a[x2++];
    for(int i = 0; i < t ;i++) a[l1 + i] = c[i];
}
void f(int l,int r) {
    if(l >= r) return ;
    int mid = (l + r) / 2;
    f(l,mid);
    f(mid + 1,r);
    h(l,mid,mid + 1,r);
}
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];
    f(1,n);
    for(int i = 1; i <= n; i++) cout << a[i] << " ";
    return 0;
}
2023/10/1 09:57
加载中...