#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语言)相关推荐

  1. 归并排序求逆序对(C语言)

    目录 1.归并排序过程 (1)逆序对概念 (2)基本思想 (3)算法实现 1.归并排序过程 使用归并排序实现求逆序对,那么首先得了解什么是归并排序(关于归并排序可以求逆序对,也是在做题中学会的). 首 ...

  2. 分治法:归并排序求逆序对

    现给出这个定义,什么是逆序对,NOIP火柴排队这个题是逆序对的一个比较好的例题,这里我们只讨论求逆序对的一些高效的算法 一般有归并排序以及树状数组两种方法,本文只讨论归并排序求逆序对 这里不给出原理只 ...

  3. 信息竞赛进阶指南--归并排序求逆序对

    // 归并排序求逆序对 void merge(int l, int mid, int r) {// 合并a[l~mid]与a[mid+1~r]// a是待排序数组, b是临时数组, cnt是逆序对个数 ...

  4. POJ 1804 Brainman (归并排序 -- 求逆序对数)

    归并排序求逆序对数: 和归并排序一样,划分和递归求解都好理解,关键在于合并,对于右边的j ,统计出左边比j 大 的元素个数 f(j),所有的f(j)家和就是我们要的逆序对数! 在归并排序中,我们将右边 ...

  5. 多项式算法5:多项式求逆

    多项式算法5:多项式求逆 多项式求逆 前置知识: FFT NTT 多项式求逆 这里的多项式求逆,其实是求多项式的逆元. 对于多项式A(x)A(x)A(x),如果存在A(x)B(x)≡1(modxn)A ...

  6. 利用归并排序求逆序对

    在逆序对的问题中,如果采用暴力求解的方法,一般也是有效的,但是O(n2)时间复杂度实在是难以接受的.但是对于逆序对问题,却有一个看似不想关的算法来解决–归并排序.时间复杂度和空间复杂度完全与归并排序一 ...

  7. hust1347(归并排序求逆序对)

    题意: 给出一个数列,你要对这个数列的数字进行k次交换操作,使得交换之后的数列逆序对虽少. 思路: 求原数列的逆序对,再和k比就行了.求逆序对要用归并排序,因为树状数组开不下. 代码: #includ ...

  8. Python(分治算法)问题 F: 求逆序对_给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。

    问题 F: 求逆序对 题目描述 给定一个序列a1,a2,-,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目. 注意:n<=10^5,ai<=10^5 ...

  9. 洛谷P4239 【模板】多项式求逆(加强版)(多项式求逆)

    传送门 咱用的是拆系数\(FFT\)因为咱真的不会三模数\(NTT\)-- 简单来说就是把每一次多项式乘法都改成拆系数\(FFT\)就行了 如果您还不会多项式求逆的左转->这里 顺带一提,因为求 ...

最新文章

  1. 5G NGC — 关键技术 — R16 eSBA
  2. Matlab函数bwmorph
  3. MySQL如何存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别
  4. 解决“跨域问题”的几种方法
  5. $Poj1952\ $洛谷$1687\ Buy\ Low,Buy\ Lower$ 线性$DP+$方案计数
  6. Struts2项目中的JSP如何访问Session对象
  7. [Spring+Hibernate系列]2.项目介绍与首个MVC实例
  8. AD教程系列 | 0-认识Altium Designer:汉化和新建项目
  9. PMP考试的难度怎么样?
  10. 如何移动visio2010连接线上的文本
  11. 3d建模师是吃青春饭的吗?混子上限也就8K,资历能力都很重要
  12. 快速排序qsort函数的compar参数
  13. 辐射避难所ol服务器维护,辐射避难所Online8月3日更新内容 育普雷斯顿up卡池
  14. avr模拟串口通讯c语言,AVR的模拟串口的问题
  15. python编程1-win7上运行python
  16. MySQL基础教程系列-约束(三)唯一约束
  17. 飞翔的小鸟游戏基于arm开发板制作
  18. echarts 3d地图-成都
  19. 计算机项目(毕设课设) 之 含文档+PPT+源码等]精品基于PHP实现的高校兼职应聘招聘系统
  20. 软件著作权的申请流程

热门文章

  1. nivdia错误0x0003_超全解决Geforce 错误代码 ERROR CODE:0x0003问题方法
  2. java多张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程
  3. CCS3.3之DM642开发环境建立
  4. 新增磁盘,创建分区,分区挂载
  5. 来自 119.*.*.*的回复: TTL 传输中过期
  6. 工作中git常用命令
  7. iOS - 视频开发
  8. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 07课
  9. android虚拟机的使用教程,Android 虚拟机可以这么用了 ?
  10. javascript option 菜单图标_善用 CSS,不用 JavaScript 也能写出这些元素