zoukankan      html  css  js  c++  java
  • 归并排序模板

    【代码】

    归并排序模板

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<set>
    using namespace std;
    #define f(i,n) for(int i=1;i<=(n);i++)
    #define ll long long
    #define INF 1<<30
    #define N 100010
    #define c 99999997
    using namespace std;
    int z[N];
    int ans;
    int n;
    int temp[N];
    void merge(int l,int m,int r)
    {
         int i=l,j=m+1,k=l;
         while(i<=m&&j<=r)
         {
             if(z[i]>z[j])
             {
                 temp[k++]=z[j++];
                 ans=(ans+m-i+1)%c;
             }
             else temp[k++]=z[i++];
         }
         while(i<=m)temp[k++]=z[i++];
         while(j<=r)temp[k++]=z[j++];
         for(int v=l;v<=r;v++)z[v]=temp[v];
    }
    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);
        merge(l,mid,r);
    }
    int main()
    {
        scanf("%d",&n);
        f(i,n)scanf("%d",&z[i]);
        merge_sort(1,n);
        printf("%d",ans);
    }
    
  • 相关阅读:
    中国象棋评估函数建模
    C语言中指针变量传参
    STM32外部中断
    C语言中的注释
    STM32学习网址
    C语言中的布尔值
    更改KEIL背景配色
    Modbus通讯协议
    DUP
    算法的时间复杂度
  • 原文地址:https://www.cnblogs.com/qwerfcxs/p/7807809.html
Copyright © 2011-2022 走看看