归并排序

图来自维基

递归调用的过程需要在脑中模拟清楚

然后是代码的细节问题

多复习多理解

刘汝佳版

#include

using namespace std;

const int MAXN = 1e5 + 10;

int ans = 0;

int arr[MAXN] = {0};

int brr[MAXN] = {0};

void mergesort(int *arr, int fst, int lst, int *brr)

{

if(lst - fst > 1)

{

int mid = fst + (lst - fst) / 2;

int p = fst, q = mid, i = fst;

mergesort(arr, fst, mid, brr);

mergesort(arr, mid, lst, brr);

while(p < mid || q < lst)

{

if(q >= lst || (p < mid && arr[p] <= arr[q]))

{

brr[i++] = arr[p++];

}

else

{

brr[i++] = arr[q++];

ans += mid - p;

}

}

for(i = fst; i < lst; i++)

arr[i] = brr[i];

}

}

int main()

{

int n;

cin>>n;

for(int i = 0; i < n; i++)

cin>>arr[i];

mergesort(arr, 0, n, brr);

//for(int i = 0; i < n; i++)

//cout<

cout<

return 0;

}

//正月点灯笼版

#include

using namespace std;

long long ans = 0; //声明逆序数

void merge(int a[], int L, int M, int R)

{

int leftlen = M - L;

int rightlen = R - M + 1;

int left[leftlen];

int right[rightlen];

int i , j , k;

for(i = L; i < M; i++)

{

left[i - L] = a[i];

}

for(i = M; i <= R; i++)

{

right[i - M] = a[i];

}

i = 0; j = 0; k = L;

while(i < leftlen && j < rightlen)

{

if(left[i] < right[j])

{

a[k++] = left[i++];

}

else

{

a[k++] = right[j++];

ans += leftlen - i; //求逆序数

}

}

while(i < leftlen)

{

a[k++] = left[i++];

}

while(j < rightlen)

{

a[k++] = right[j++];

}

}

void merge_sort(int a[], int L, int R)

{

if(L == R)

return ;

else

{

int M = (R + L) / 2;

merge_sort(a, L, M); //递归分解左侧

merge_sort(a, M + 1, R); //递归分解右侧

merge(a,L,M + 1,R); //合并

}

}

int main()

{

ios::sync_with_stdio(false);

int a[50010];

int n;

cin>>n;

for(int i = 0; i < n; i++)

cin>>a[i];

merge_sort(a,0,n - 1);

for(int i = 0; i < n; i++)

{

cout<

}

cout<

cout<

return 0;

}

分治递归逆序数_[模板] 归并排序 逆序数 分治相关推荐

  1. java百度地图逆地址解析_百度地图逆地址解析

    什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HTTP ...

  2. 【排序】归并类排序—归并排序(逆序数问题)

    文章目录 前言 归并排序(merge sort) 逆序数 结语 微信公众号:bigsai 数据结构与算法专栏 前言 在排序中,我们可能大部分更熟悉冒泡排序.快排之类.对归并排序可能比较陌生.然而事实上 ...

  3. -9 逆序输出一个整数的各位数字_逆序对个数(归并排序)

    题目描述 输入 N 组数据,对每组数据输出逆序对个数. 输入 对于每组测试用例,第一行输入此组数据元素个数 x,接下来 x 行,每行一个数,表示元素.(1≤x≤500000)(1≤x≤500000) ...

  4. python输入一个三位数、输出它的逆序数_从键盘任意输入一个3位整数

    从键盘任意输入一个3位整数,编程计算并输出它的逆序数 程序哪里错了??为什么输出的是一个长长的负数 编写程序,输入一个3位正整数, www.zhiqu.org     时间: 2020-11-24 # ...

  5. 分治算法,逆序对,三维偏序与CDQ分治

    分治算法基本思想 当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出. 对于这类问题,我们往往先把它分解成几个子问题,找到求出 ...

  6. 逆序对个数(归并排序)

    数对 (归并排序) 题目链接:https://ac.nowcoder.com/acm/contest/27274/H 来源:牛客网 Problem Description 链接:https://ac. ...

  7. python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)

    Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...

  8. 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对

    [题目链接] ybt 1311:[例2.5]求逆序对 ybt 1237:求排列的逆序数 OpenJudge NOI 2.4 7622:求排列的逆序数 洛谷 P1908 逆序对 ybt 1311,123 ...

  9. AcWing 788 逆序对的数量-归并排序

    给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j] ,则其为一个逆序对:否则不 ...

最新文章

  1. 服务器端物理实现(二)
  2. pytorch维度统计
  3. 括号匹配算法 java_使用栈实现括号匹配算法-java
  4. shardingsphere启动的时候报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
  5. 【BUG记录】Matisse显示的图片乱序或者在全部项不显示
  6. linux文件名过长无法删除,不能删除文件,出现“源文件名长度大于系统支持的长度...
  7. 中国湖北区域汉至现代行政区划GIS数据
  8. 毕业论文格式修改方法
  9. 软件推荐:Picasa
  10. Windows10本地数据库搭建(MySQL、PostgreSQL)
  11. 全平台视频转GIF软件对比与推荐(iOS/安卓/Windows/Mac)
  12. android 下载apk后如何安装程序,Android下载并安装APK
  13. LabVIEW编程LabVIEW开发研华PCI 1756例程与相关资料
  14. OBD柴油货车环保在线检测终端助力机动车尾气监管与时俱进
  15. 中国撸串指北:13万家烧烤店的吃货最爱
  16. 南邮80c51汇编语言编程实验,实验三 查表 多分支(80C51单片机汇编语言编程)
  17. PPM,PGM图片格式
  18. 利用Prometheus(普罗米修斯)Grafana对机器群的运行时各项数据进行监控
  19. 骄傲狮子座的感情世界(图
  20. 史上最全!国内外最新免费3D模型下载网站分享!

热门文章

  1. hdu2561 第二小整数(排序)
  2. 如何设置电脑自动登录系统?不用输入用户名和密码
  3. 题目1176:树查找
  4. Python入门学习笔记03(装饰器)
  5. Oracle存储过程和存储函数创建
  6. glusterfs快速安装
  7. at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)
  8. 要看懂MATLAB的Help需要积累的英文词汇!
  9. ASCII码表完整版
  10. IBM WebSphere Application Server 诊断和调优