题目地址:http://ac.jobdu.com/problem.php?pid=1348

题目描述:
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
输入:
每个测试案例包括两行:
第一行包含一个整数n,表示数组中的元素个数。其中1 <= n <= 10^5。
第二行包含n个整数,每个数组均为int类型。
输出:
对应每个测试案例,输出一个整数,表示数组中的逆序对的总数。
样例输入:
4
7 5 6 4
样例输出:
5
#include <stdio.h>

long long cnt;

void Merge (int data[], int start, int mid, int end){
int new_data[100000];
int i = start;
int j = mid + 1;
int k = start; while (i <= mid && j <= end){
if (data[i] > data[j]){
new_data[k] = data[i];
++i;
++k;
cnt += (end - j + 1);
}
else{
new_data[k] = data[j];
++j;
++k;
}
}
while (i <= mid){
new_data[k] = data[i];
++i;
++k;
}
while (j <= end){
new_data[k] = data[j];
++j;
++k;
}
while (start <= end){
data[start] = new_data[start];
++start;
}
} void MergeSort (int data[], int start, int end){
int mid; if (start < end){
mid = (start + end) >> 1;
MergeSort (data, start, mid);
MergeSort (data, mid + 1, end);
Merge (data, start, mid, end);
}
} int main(void){
int n;
int data[100000];
int i; while (scanf ("%d", &n) != EOF){
for (i=0; i<n; ++i)
scanf ("%d", &data[i]);
cnt = 0;
MergeSort (data, 0, n - 1);
printf ("%lld\n", cnt);
} return 0;
}

清橙OJ上相似的题目:http://oj.tsinsen.com/A1078

九度OJ 1348 数组中的逆序对 -- 归并排序的更多相关文章

  1. 九度oj 1348 数组中的逆序对

    原题链接:http://ac.jobdu.com/problem.php?pid=1348 归并排序求逆序对... #include<algorithm> #include<iost ...

  2. 剑指Offer - 九度1348 - 数组中的逆序对

    剑指Offer - 九度1348 - 数组中的逆序对2014-01-30 23:19 题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个 ...

  3. 力扣Leetcode 面试题51. 数组中的逆序对 - 归并排序

    在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0 <= ...

  4. 剑指 Offer 51. 数组中的逆序对 + 归并排序 + 树状数组

    剑指 Offer 51. 数组中的逆序对 Offer_51 题目描述 方法一:暴力法(双层循环,超时) package com.walegarrett.offer; /** * @Author Wal ...

  5. 九度OJ 1351 数组中只出现一次的数字

    题目地址:http://ac.jobdu.com/problem.php?pid=1351 题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输 ...

  6. 九度OJ 1370 数组中出现次数超过一半的数字

    题目地址:http://ac.jobdu.com/problem.php?pid=1370 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2 ...

  7. 九度OJ 1534 数组中第K小的数字 -- 二分查找

    题目地址:http://ac.jobdu.com/problem.php?pid=1534 题目描述: 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C. 譬如A为[1,2],B为[ ...

  8. [jobdu]数组中的逆序对

    http://ac.jobdu.com/problem.php?pid=1348 数组中的逆序对也是个常见的题目,算法导论中也有一些描述,参考:http://www.cnblogs.com/wuyue ...

  9. 【剑指Offer面试编程题】题目1348:数组中的逆序对--九度OJ

    题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组 ...

随机推荐

  1. ECSHOP在线手册布局参考图--登录/注册页 user_passport.dwt

        A.会员登录框 1,设置方法 自带模块 2,代码相关 user_passport.dwt 中 <div class="usBox_1 f_l"> <div ...

  2. XMPP——Smack[1]连接、登陆及账户操作

    临毕业前,应需求,花了三天写了个小的聊天工具,貌似简陋得很….若有机会再完善吧,目前毕业季,处理毕业事宜,还要准备即将的入职. 眼瞅着大学四年就这么结束了,哎. 开始吧,四篇博文简单介绍下基本实现,由 ...

  3. xcopy拷贝判断是否成功 robocopy排除子目录

    xcopy \\172.16.22.65\server\*.* C:\Inetpub\wwwroot\Server /h /r /s /yif %errorlevel% neq 0 echo copy ...

  4. Parse error: syntax error, unexpected T_PUBLIC in 问题解决

    class 类中 public function _getInfo($sn){        $title = '';        $_array = explode('~', $sn);      ...

  5. js replace如何实现全部替换

    js中replace默认只替换第一个相关字符,要想实现替换全部相关字符.如下: replace(/*/g, ','); 例如,替换字符串中的\n str.replace(/\n/g, ',');

  6. git克隆远程项目分支到本地对应分支

    最近公司改用git了,研究了一下如何把远程的代码克隆到本地. 1. 配置对应信息 git config --global user.name git config --global user.emai ...

  7. Android 屏幕画笔实现

    Tuya.rar

  8. android124 zhihuibeijing 新闻中心-新闻 -北京页签 下拉刷新

    缓存工具类:以url为key,json数据为value, package com.itheima.zhbj52.utils; import com.itheima.zhbj52.global.Glob ...

  9. mysql优化--博森瑞

    http://blog.itpub.net/28916011/viewspace-1758440/ 现在说一下mysql的内存和I/O方面的两个特点. 一. mysql内存特点: 1.  也有全局内存 ...

  10. innodb_strict_mode=1

    从MySQL5.5.X版本开始,你可以开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能.开启此功能后,当创建表(CREATE TABLE).更改表(ALTER TABLE)和 ...