zoukankan      html  css  js  c++  java
  • 787. 归并排序

    归并排序

    #include<iostream>
    using namespace std;
    
    const int N = 100010;
    
    int q[N], temp[N];
    int n;
    
    void merge_sort(int l, int r){
        if(l == r) return;
        
        int mid = l + r >> 1;
        
        merge_sort(l, mid), merge_sort(mid + 1, r);
        
        int i = l, j = mid + 1, k = 0;
        while(i <= mid && j <= r)
            if(q[i] < q[j]) temp[k ++] = q[i ++];
            else temp[k ++] = q[j ++];
            
        while(i <= mid) temp[k ++] = q[i ++];
        while(j <= r) temp[k ++] = q[j ++];
        
        for(int i = 0, j = l; i < k; i ++, j ++) q[j] = temp[i];
    }
    
    int main(){
        cin >> n;
        
        for(int i = 0; i < n; i ++) cin >> q[i];
        
        merge_sort(0, n - 1);
        
        for(int i = 0; i < n; i ++) cout << q[i] << ' ';
        
        return 0;
    }
    

    逆序对

    #include<iostream>
    using namespace std;
    
    const int N = 100010;
    
    #define LL long long
    
    int q[N], temp[N];
    int n;
    
    LL merge_sort(int l, int r){
        if(l == r) return 0;
        
        int mid = l + r >> 1;
        LL ans = merge_sort(l, mid) + merge_sort(mid + 1, r);
        
        int i = l, j = mid + 1, k = 0;
        while(i <= mid && j <= r)
            if(q[i] <= q[j]) temp[k ++] = q[i ++];
            else{
                temp[k ++] = q[j ++];
                ans += mid - i + 1;
            } 
            
        while(i <= mid) temp[k ++] = q[i ++];
        while(j <= r) temp[k ++] = q[j ++];
        
        for(int i = 0, j = l; i < k; i ++, j ++) q[j] = temp[i];
        return ans;
    }
    
    int main(){
        cin >> n;
        
        for(int i = 0; i < n; i ++) cin >> q[i];
        
        cout << merge_sort(0, n - 1) << endl;
        
        return 0;
    }
    
  • 相关阅读:
    cordova 里js和oc通信原理
    awakeFromNib
    CALayer树形结构
    SDWebImage原理,转载
    gcd多线程
    block的存储形态
    关于weak对象什么时候释放
    Swift是否和OC一样有runtime机制
    大数据基础
    python进行离线打包并安装
  • 原文地址:https://www.cnblogs.com/tomori/p/13825472.html
Copyright © 2011-2022 走看看