逆序对算法c语言,归并排序求逆序对的代码(C语言)
#include
#include
#define MAX 32767
int merge(int *array, int p,int q,int r) {
//归并array[p...q] 与 array[q+1...r]
int tempSum=0;
int n1 = q-p+1;
int n2 = r-q;
int* left = NULL;
int* right = NULL;
int i,j,k;
left = ( int *)malloc(sizeof(int) * (n1+1));
right = ( int *)malloc(sizeof(int) * (n2+1));
for(i=0; i
left[i] = array[p+i];
for(j=0; j
right[j] = array[q+1+j];
left[n1] = MAX; //哨兵,避免检查每一部分是否为空
right[n2] = MAX;
i=0;
j=0;
for(k=p; k<=r; k++) {
if( left[i] <= right[j]) {
array[k] = left[i];
i++;
} else {
array[k] = right[j];
j++;
tempSum += n1 - i;
printf("tempSum = %d\n", tempSum);
}
}
return tempSum;
}
int mergeSort(int *array, int start, int end ) {
int sum=0;
if(start < end) {
int mid = (start + end) /2;
sum += mergeSort(array, start, mid);
sum += mergeSort(array, mid+1, end);
sum += merge(array,start,mid,end);
}
return sum;
}
int main(int argc, char** argv) {
int array[5] = {9,1,0,5,4};
int inversePairNum;
int i;
inversePairNum = mergeSort(array,0,4);
for( i=0; i<5; i++)
printf("%d ", array[i]);
printf("\nInverse pair num = %d\n", inversePairNum);
return 0;
}
逆序对算法c语言,归并排序求逆序对的代码(C语言)相关推荐
- 归并排序求逆序对(C语言)
目录 1.归并排序过程 (1)逆序对概念 (2)基本思想 (3)算法实现 1.归并排序过程 使用归并排序实现求逆序对,那么首先得了解什么是归并排序(关于归并排序可以求逆序对,也是在做题中学会的). 首 ...
- 分治法:归并排序求逆序对
现给出这个定义,什么是逆序对,NOIP火柴排队这个题是逆序对的一个比较好的例题,这里我们只讨论求逆序对的一些高效的算法 一般有归并排序以及树状数组两种方法,本文只讨论归并排序求逆序对 这里不给出原理只 ...
- 信息竞赛进阶指南--归并排序求逆序对
// 归并排序求逆序对 void merge(int l, int mid, int r) {// 合并a[l~mid]与a[mid+1~r]// a是待排序数组, b是临时数组, cnt是逆序对个数 ...
- POJ 1804 Brainman (归并排序 -- 求逆序对数)
归并排序求逆序对数: 和归并排序一样,划分和递归求解都好理解,关键在于合并,对于右边的j ,统计出左边比j 大 的元素个数 f(j),所有的f(j)家和就是我们要的逆序对数! 在归并排序中,我们将右边 ...
- 多项式算法5:多项式求逆
多项式算法5:多项式求逆 多项式求逆 前置知识: FFT NTT 多项式求逆 这里的多项式求逆,其实是求多项式的逆元. 对于多项式A(x)A(x)A(x),如果存在A(x)B(x)≡1(modxn)A ...
- 利用归并排序求逆序对
在逆序对的问题中,如果采用暴力求解的方法,一般也是有效的,但是O(n2)时间复杂度实在是难以接受的.但是对于逆序对问题,却有一个看似不想关的算法来解决–归并排序.时间复杂度和空间复杂度完全与归并排序一 ...
- hust1347(归并排序求逆序对)
题意: 给出一个数列,你要对这个数列的数字进行k次交换操作,使得交换之后的数列逆序对虽少. 思路: 求原数列的逆序对,再和k比就行了.求逆序对要用归并排序,因为树状数组开不下. 代码: #includ ...
- Python(分治算法)问题 F: 求逆序对_给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。
问题 F: 求逆序对 题目描述 给定一个序列a1,a2,-,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目. 注意:n<=10^5,ai<=10^5 ...
- 洛谷P4239 【模板】多项式求逆(加强版)(多项式求逆)
传送门 咱用的是拆系数\(FFT\)因为咱真的不会三模数\(NTT\)-- 简单来说就是把每一次多项式乘法都改成拆系数\(FFT\)就行了 如果您还不会多项式求逆的左转->这里 顺带一提,因为求 ...
最新文章
- 5G NGC — 关键技术 — R16 eSBA
- Matlab函数bwmorph
- MySQL如何存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别
- 解决“跨域问题”的几种方法
- $Poj1952\ $洛谷$1687\ Buy\ Low,Buy\ Lower$ 线性$DP+$方案计数
- Struts2项目中的JSP如何访问Session对象
- [Spring+Hibernate系列]2.项目介绍与首个MVC实例
- AD教程系列 | 0-认识Altium Designer:汉化和新建项目
- PMP考试的难度怎么样?
- 如何移动visio2010连接线上的文本
- 3d建模师是吃青春饭的吗?混子上限也就8K,资历能力都很重要
- 快速排序qsort函数的compar参数
- 辐射避难所ol服务器维护,辐射避难所Online8月3日更新内容 育普雷斯顿up卡池
- avr模拟串口通讯c语言,AVR的模拟串口的问题
- python编程1-win7上运行python
- MySQL基础教程系列-约束(三)唯一约束
- 飞翔的小鸟游戏基于arm开发板制作
- echarts 3d地图-成都
- 计算机项目(毕设课设) 之 含文档+PPT+源码等]精品基于PHP实现的高校兼职应聘招聘系统
- 软件著作权的申请流程
热门文章
- nivdia错误0x0003_超全解决Geforce 错误代码 ERROR CODE:0x0003问题方法
- java多张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程
- CCS3.3之DM642开发环境建立
- 新增磁盘,创建分区,分区挂载
- 来自 119.*.*.*的回复: TTL 传输中过期
- 工作中git常用命令
- iOS - 视频开发
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 07课
- android虚拟机的使用教程,Android 虚拟机可以这么用了 ?
- javascript option 菜单图标_善用 CSS,不用 JavaScript 也能写出这些元素