【模板】归并排序
来源:互联网 发布:英汉互学软件 编辑:程序博客网 时间:2024/06/06 19:05
归并排序求逆序对
#include<iostream>#include<cstdio>#define ll long longusing namespace std;const int N=100010;ll ans=0;int c[N],a[N],n;void Merge(int l,int r){ int num=0; int mid=(l+r)/2; int p1=l,p2=mid+1; while(p1<=mid || p2<=r){ if(p1>mid) {c[++num]=a[p2];p2++;continue;} if(p2>r) {c[++num]=a[p1];p1++;continue;} if(a[p1]<=a[p2]) {c[++num]=a[p1];p1++;continue;} if(a[p1]>a[p2]) {c[++num]=a[p2];ans+=mid-p1+1;p2++;continue;} } for(int i=1;i<=num;i++) a[i+l-1]=c[i];}void MergeSort(int l,int r){ if(l<r){ int mid=(l+r)/2; MergeSort(l,mid); MergeSort(mid+1,r); Merge(l,r); }}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); MergeSort(1,n);// for(int i=1;i<=n;i++) printf("%d ",a[i]); printf("%lld\n",ans); return 0;}
0 0
- 归并排序模板
- C++归并排序模板
- 归并排序的模板
- 归并排序算法模板
- 归并排序模板
- C++模板归并排序
- 归并排序【模板】
- 归并排序模板
- 【模板】归并排序
- 归并排序模板
- 个人模板 归并排序
- [模板]归并排序
- 归并排序模板
- 归并排序模板
- 【模板】归并排序
- 快速排序+归并排序模板
- c++模板实现归并排序
- 归并排序模板w(kl)
- Light oj Trailing Zeroes (III) (二分查找)
- vps transmission
- 【模板】欧拉函数
- Python2.7.11安装matplotlib,numpy,scikit-learn等其他包,w7x86x64下无问题
- 深度学习-资料收纳集
- 【模板】归并排序
- WKWebView与JS交互实战技巧之API介绍
- BNUOJ-24431-Crossed ladders
- 数据帧和网络编址
- leetcode——309——Best Time to Buy and Sell Stock with Cooldown
- 编写高质量的代码,从命名入手
- JAVA解析DBF文件导入到Oracle数据库中
- vtk实战(四十一)——读取tif数据
- MD5加密