当前位置: 首页 > news >正文

【算法】788. 逆序对的数量

题目

逆序对的数量

思路

在归并排序的基础上求逆序数,如果l-mid中的数大于mid+1-r中的数,则i和i之后的所有数都是指针j所指数的逆序数。与归并算法不同的是,本题需要有返回值,返回逆序数的数量。

代码

#include<iostream>
using namespace std;
typedef long long ll;
const int N = 100010;
int n;
int a[N], temp[N];
ll merge_sort(int l, int r)
{
	if (l >= r)
	{
		return 0;
	}
	int mid = (l + r) / 2;
	ll sum=merge_sort(l, mid)+merge_sort(mid + 1, r);
	int k = 0, i = l, j = mid + 1;
	while (i <= mid && j <= r)
	{
		if (a[i] <= a[j])
		{
			temp[k++] = a[i++];
		}
		else
		{
			temp[k++] = a[j++];
			sum = sum + mid - i + 1;
		}
	}
	while (i <= mid)
	{
		temp[k++] = a[i++];
	}
	while (j <= r)
	{
		temp[k++] = a[j++];
	}
	for (int i = l, j = 0;i <= r;i++, j++)
	{
		a[i] = temp[j];
	}
	return sum;
}
int main()
{
	cin >> n;
	for (int i = 0;i < n;i++)
	{
		cin >> a[i];
	}
	cout << merge_sort(0, n - 1) << endl;
	return 0;
}

相关文章:

  • DeepSeek 的架构思维与java架构的思考
  • Redis7——基础篇(六)
  • Redis常见数据结构及其在项目中用法
  • 软件测试工程师职业规划:从入门到卓越
  • 【Deepseek】Linux 本地部署 Deepseek
  • 第37天:安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类
  • 【图像处理】:两幅图中相同区域的相似度比较
  • 矩阵加减乘除的意义与应用
  • 初尝git自结命令大全与需要理解的地方记录
  • 【爬虫 JS 逆向实战 - 请求载荷加密详细教程】
  • 5 - 库函数
  • DeepSeek 基础使用文档介绍
  • 大模型训练微调工具对比:Megatron-DeepSpeed、Axolotl、DeepSpeed、Accelerate和Unsloth
  • Unity 全局屏幕点击特效
  • 后端性能测试优化案例
  • 【deepseek】本地部署后api接口的封装
  • 如何看nginx.conf文件?
  • OpenCV机器学习(10)训练数据的一个核心类cv::ml::TrainData
  • Django5 实用指南(四)URL路由与视图函数
  • VBA脚本将DeepSeek嵌入Word中教程
  • 这就是上海!
  • 深入贯彻中央八项规定精神学习教育中央指导组培训会议召开
  • 上海开花区域结果,这项田径大赛为文旅商体展联动提供新样本
  • 国家统计局:一季度全国规模以上文化及相关产业企业营业收入增长6.2%
  • 外交部:印度香客赴中国西藏神山圣湖朝圣将于今年夏季恢复
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了