归并求逆序对【模板】
来源:互联网 发布:博优化纤 官网 编辑:程序博客网 时间:2024/06/06 00:41
代码:
#include <stdio.h>const int M=999999;int A[500];int cunt=0;int L[250],R[250];void Merge(int Left,int Middle,int Right){int n1=Middle-Left+1;int n2=Right-Middle;for(int i=1;i<=n1;i++)L[i]=A[Left+i-1];for(i=1;i<=n2;i++)R[i]=A[Middle+i];L[n1+1]=M;R[n2+1]=M;i=1;int j=1;for(int k=Left;k<=Right;k++){if(L[i]<=R[j])A[k]=L[i++];else{A[k]=R[j++];cunt+=n1-i+1; //cunt为全局变量}}}void Merge_sort(int Left,int Right){int Middle;if(Left<Right){Middle=(Left+Right)/2; Merge_sort(Left,Middle); // 二分分解左部分Merge_sort(Middle+1,Right); // 二分分解有部分Merge(Left,Middle,Right); //合并两部分}}int main(){int n;scanf("%d",&n);int i;for(i=1;i<=n;i++)scanf("%d",&A[i]);Merge_sort(1,n);printf("%d\n",cunt);return 0;}
运行结果:
5
2 3 8 6 1
5
- 归并求逆序对【模板】
- 归并求逆序对
- 归并求逆序对
- 归并排序求逆序对
- poj1007 归并求逆序对
- 归并排序求逆序对
- 归并排序求逆序对~~~
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 爹地,我找到了!15个极好的Linux find命令示例
- 纪念光棍节小游戏
- NGUI:HUD Text
- ORACLE中sga那些事
- 树莓派学习笔记——I2C Tools 学习笔记
- 归并求逆序对【模板】
- Python 連接 MySQL
- svn的简单介绍
- [转] 用友NC二次开发问题汇总【转】
- 到底什么是MVC?
- 每天坚持30分钟 摘抄
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- 4.3 《硬啃设计模式》 第20章 集合访问的烦恼 - 迭代器模式(Iterator Pattern)
- 到极处时是起点