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

    逆序对永远只会树状数组写法OrzOrzOrz……

     1 #include <stdio.h>
     2 
     3 const int _N = 12000;
     4 
     5 int A[_N], B[_N], cnt;
     6 
     7 void Merge(int l, int r)
     8 {
     9     int i, j, k, mid;
    10     mid = l+r >> 1;
    11     i = k = l, j = mid+1;
    12     while (i <= mid && j <= r)
    13         if (A[i] <= A[j]) B[k++] = A[i++];
    14         else B[k++] = A[j++], cnt += mid-i+1;
    15     while (i <= mid) B[k++] = A[i++];
    16     while (j <= r) B[k++] = A[j++];
    17     for (i = l; i <= r; ++i) A[i] = B[i];
    18     return;
    19 }
    20 
    21 void MergeSort(int l, int r)
    22 {
    23     if (l >= r) return;
    24     int mid = l+r >> 1;
    25     MergeSort(l, mid), MergeSort(mid+1, r);
    26     Merge(l, r);
    27     return;
    28 }
    29 
    30 int main()
    31 {
    32     int i, N;
    33     scanf("%d", &N);
    34     for (i = 1; i <= N; ++i) scanf("%d", &A[i]);
    35     MergeSort(1, N);
    36     for (i = 1; i <= N; ++i) printf("%d ", A[i]);
    37     printf("
    NiXuDuiShu: %d
    ", cnt);
    38     return 0;
    39 }
  • 相关阅读:
    骑行封龙山
    静夜
    骑行伏羲台
    我?
    生活挺好
    多事之秋,大家注意安全
    看不到啊看不到
    个人时间管理
    给DataGrid设置中文列名
    食用油是那么让人又爱又恨!
  • 原文地址:https://www.cnblogs.com/ghcred/p/9294655.html
Copyright © 2011-2022 走看看