AcWing逆序对的数量(Java)

AcWing算法基础课-788逆序对的数量-Java题解 本文详细讲解了如何通过归并排序算法高效计算数组中的逆序对数量。通过递归分治和归并过程,我们不仅实现了数组的排序,还在排序过程中巧妙地计算了逆序对的数量。 阅读详情

给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。

逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。

输入格式

第一行包含整数 n,表示数列的长度。

第二行包含 n 个整数,表示整个数列。

输出格式

输出一个整数,表示逆序对的个数。

数据范围

1≤n≤100000,
数列中的元素的取值范围 [1,10^9]。

输入样例:
6
2 3 4 5 6 1
输出样例:
5

import java.util.*;
//1:无需package
//2: 类名必须Main, 不可修改

public class Main {
	static int[] a,t;
	public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int len=scan.nextInt();
        a=new int[len];
        t=new int[len];
        for(int i=0;i<len;i++){
            a[i]=scan.nextInt();
        }
        System.out.println(f(0,len-1));
    }
	public static long f(int l,int r) {
		if(l>=r) {
			return 0;
		}
		long ans=0;
		int mid=l+(r-l)/2;
		ans=f(l,mid)+f(mid+1,r);
		int k=0,i=l,j=mid+1;//k是指向原数组的下标,i指向[L,mid]中的数,j指向[mid+1,R]中的数
		
		//归并的过程
		while(i<=mid&&j<=r) {
			if(a[i]>a[j]) {
				t[k]=a[j];
				k++;
				j++;
				ans+=mid-i+1;
			}
			else {
				t[k]=a[i];
				k++;
				i++;
			}
		}
		
		//如果归并后还剩有数字,也要归并回临时数组t
		while(i<=mid) {
			t[k]=a[i];
			k++;
			i++;
		}
		while(j<=r) {
			t[k]=a[j];
			k++;
			j++;
		}
		
		//物归原主
		for(int ii=l,jj=0;ii<=r;ii++,jj++) {
			a[ii]=t[jj];
		}
		return ans;
	}
}

AcWing算法基础课-790数的三次方根-Java题解 本文详细介绍了一个使用二分法计算浮点数三次方根的算法。通过逐步逼近目标值,程序能够在给定的区间内精确计算出结果,并保留6位小数。文章从输入处理、二分法初始化、迭代过程到输出结果,全面解析了算法的实现步骤。 阅读详情

相关推荐

Android流畅度优化实战:从掉帧定位到布局与渲染调优

在移动应用开发中,性能优化是决定用户体验与留存率的关键环节,其中Android流畅度优化更是核心命题。用户感知的“卡顿”往往并非持续低帧率,而是由于掉帧率波动引发的偶发不流畅。本文从性能优化理论出发,系统讲解如何使用Systrace、CPU Profiler等工具定位掉帧瓶颈,深入分析布局层级过深、过度绘制、对象分配与GC压力等常见诱因。同时结合冷启动耗时、列表滚动掉帧、Bitmap加载等真实工程案例,阐述从应用层到系统层的分级优化策略,并给出低端机适配、异步化改造及线上监控体系搭建的实践方案。内容覆盖布局

weixin_29185493的博客 200

acwing 788. 逆序对的数量(归并) java

java 归并

人言束负兑生|完美是完蛋的开始 342

UE5网络模块实战:属性复制、RPC与联机开发踩坑指南

多人联机开发中,网络同步是核心难题。UE5网络模块以服务器权威为基础,通过Actor复制、RPC和所有权机制实现多端状态一致。理解属性复制与OnRep回调、区分Server/Client/Multicast RPC的适用场景,是构建稳定联机架构的关键。本文结合数字孪生与多端协作场景,探讨如何将渲染与逻辑分离,并针对打包后网络失效、端口防火墙、崩溃排查等工程实践问题给出解决方案。通过蓝图接口解耦表现层,利用C++创建StaticMesh组件实现服务器逻辑与客户端表现分离,同时注意专用服务器不加载渲染依赖(如D

weixin_29010003的博客 272

AcWing788. 逆序对的数量(java)【归并排序】

同leetcode剑指 Offer 51. 数组中的逆序对 谢谢y老师学到了 哈哈哈爱了 java: import java.util.*; public class Main{ private static int N = 100010; private static int[] q = new int[N]; private static int[] tmp = new int[N]; public static void main(String[].

qq_45908682的博客 273

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2135

Altium Designer(AD)的简易使用

一、绘制原理图、原理图库 首先来说明原理图的概念。 根据百度百科,原理图,顾名思义就是表示电路板上各器件之间连接原理的图表。也就是表示芯片上的引脚连接什么元件,各个元件谁和谁相连,电源电压的大小之类的。​ 再来说一下原理图和原理图库的区别和联系。 原理图是某个产品的原理图设计文件;原理图库是设计原理图时用到的电子元件的电路符号的集合。绘制PCB板时先设计原理图即建立原理图文件,而在原理图文件中设计原理图前必须将原理图库文件加载到原理图编辑环境才能使用其中的电路符号。 接下来说明如...

qq_52630607的博客 2万+

逆序对的个数java_AcWing 788. 基础_归并_逆序对的数量java_python_c++

题目描述给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样...

weixin_35075144的博客 239

《Mac 配置 Codex App 代理完整指南:端口检测 + launchctl 设置 + 取消代理》

本文详细介绍 Mac 上 Codex App 代理配置完整流程,包括如何查看代理端口、如何使用 launchctl 设置 HTTP_PROXY / HTTPS_PROXY、如何验证代理是否生效以及如何取消代理配置。适用于 Mac Codex 代理、Mac HTTP_PROXY 设置、Mac ChatGPT 代理等开发环境场景。

weixin_50029578的博客 5339

AcWing 788. 逆序对的数量_Java

用暴力会超时,所以选择归并排序。

m0_68055637的博客 142

[QMT量化交易小白入门]-九十五、多因子选股和趋势择时股票量化交易策略,年化收益率40.61%

本策略采用“双层过滤”机制:第一层基于多维度财务指标进行股票池筛选(多因子选股),第二层运用均线系统和MACD指标实施动态择时(趋势跟踪)。这种设计既保证了组合的质量下限,又能灵活应对市场波动。因子配置科学性:涵盖估值、成长、盈利、动量四大类因子风险控制精细化:设置动态止损与仓位管理机制信号验证严格性:多重条件交叉验证提升胜率。

木头大左的博客 799

蓝桥杯 stm32 PWM 测量频率

参考 数据手册:比赛 的板子 上面有两个信号发生器,如下图。通过 扭动 可变电阻 (R40, R39), 来实现 PWM 频率的改变。PA15PB4。PA15,PB4分别使用TIM2_CH1TIM3_CH1来对频率进行捕获。

wuyiyu_的博客 2931

枚举、模拟与排序

【代码】枚举、模拟与排序。

m0_73165551的博客 505

【MATLAB代码】雷达观测目标跟踪模型|H-infinity Filter(H无穷大滤波)与EKF(扩展卡尔曼滤波)的对比。附完整代码,订阅专栏后可直接查看

对比了经典扩展卡尔曼滤波(EKF)与H∞优化的EKF(H∞-EKF)在目标跟踪中的性能。通过MATLAB仿真实验,结果显示:在存在模型误差和测量噪声的情况下,H∞-EKF相比经典EKF在位置误差上降低

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 243

【Java】浅谈排序

快速排序 思路及其作用 快排就是在数列中随便选择一个数, 经过操作让左面的数小于这个数, 右面的数大于这个数时间复杂度(在一般情况下是O(nlogn), 在特殊情况下为O(n^2)。快排的作用是排序,而Java中Arrays.sort而也是排序,且复杂度稳定为nlogn,那应该在什么情况下使用?快排的特点就是让我们可以有操作内部的空间,从而利用其部分规律的特点用更少的复杂度完成题目,列如:第k个数 acwing785快速排序 给定你一个长度为 n的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。

weixin_50028881的博客 185

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

AcWing 788. 逆序对的数量 (归并)

Problem 在分治后的每一层合并中顺便求出逆序对数量是这个题想法的由来,归并排序分治我们求的是从小到大的顺序,我们所求的逆序对恰好是逆序数量,与归并排序不谋而合。 例如[3,4,1,2]中q[0]>q[2],则q[0],q[1]都与q[2]成逆序对,而q[mid]与q[i]有mid-i+1个数字,因此逆序对增加mid-i+1 import java.io.BufferedReader; ...

SoKeeGan 272

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Acwing基础课每日一题 第四天 788-简单-逆序对的数量

文章目录 前言 题目描述 思路解析: 代码(c++) 结语 原题连接:788-简单-逆序对的数量 前言 算法是考研和实习找工作进大厂的必备工具,为了23考研以及日后进大厂,开始学习算法! 作者简介 大家好,我是977,一个正在慢慢进步的程序猿小白,很高兴能在这里遇见大家,每天一点点成长,一起早日成为大佬!!! 算法基础课共106题 这是我的第4/106题 题目描述 给定一个长度为nn的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第ii...

ypp977的博客 818

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Acwing---788.逆序对的数量

合并过程中计算逆序对:在合并两个已排序的子数组时,如果发现逆序对(即 arr[i] > arr[j]),则将逆序对的数量递增为第一个子数组中剩余的元素数量(即。一种高效的计算逆序对的方法是使用修改后的归并排序算法。基本思想是将数组分割为较小的子数组,递归地对它们进行排序,然后在合并过程中计算逆序对。然后,将子数组按照排序顺序合并回来,同时在合并过程中计算逆序对。合并,总逆序对数量 = 1(因为 2 > 1 且 且 2 后面没有其他元素)的整数数列,请你计算数列中的逆序对的数量。,数列中的元素的取值范围。

qq_51251599的博客 1291

AcWing788逆序对的数量

题目链接:https://www.acwing.com/problem/content/790/

a695484357的博客 196

AcWing 788: 逆序对的数量

给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式 输出一个整数,表示逆序对的个数。 数据范围 1≤n≤1000001≤n≤100000 输入样例: 6 2 3 4 5 6 1 输出样例: 5 //此题最差的时间复杂度是O(n

StrawberryMuMu的博客 279

AcWing 788. 逆序对的数量

活动 - AcWing 【归并排序】归并排序的经典应用,按照元素从大到小的顺序进行归并排序,如果前半部分有个元素比后半部分大,则后半部分从这个元素开始一直到r都能和前面的元素构成逆序对。...

Sasakihaise_的博客 2425

ACWing04:逆序对的数量

本文介绍了归并排序算法及其在计算逆序对中的应用。归并排序采用分治法思想,将数组递归划分为单个元素后有序合并。在合并过程中,当左半部分元素大于右半部分时,即可统计逆序对数量。文章给出了具体实现代码,通过修改归并排序,在合并阶段累加逆序对数目(当arr[i]>arr[j]时,逆序对数增加mid-i+1)。该算法能高效解决逆序对统计问题,时间复杂度为O(nlogn)。

new一个对象 208

Acwing787归并排序 && 788逆序对数量

归并排序的时间复杂度为,其中n为数组的长度。

m0_51547272的博客 544

蓝桥杯--排序1 AcWing 788. 逆序对的数量

AcWing 788. 逆序对的数量 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式 输出一个整数,表示逆序对的个数。 数据范围 1≤n≤100000 输入样例: 6 2 3 4 5 6 1 输出样例: 5 题意:找出有多少个 i<j 且 a[i]

ooold_six的博客 264

Java求逆序对个数,AcWing 65. 数组中的逆序对 + 归并排序与求逆序对详解 + 图解 Java...

@[TOC]剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解题思路记住一句话,求逆序对是归并排序的典型应用之一。那我们看完题目就知道这题肯定是用归并排序了。归并排序是利用归并的思想实...

weixin_33504929的博客 368

AcWing 65. 数组中的逆序对-java

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。数据范围 给定数组的长度 [0,100]。

qq_41810415的博客 176

对一个数组逆序 java_AcWing 65. 数组中的逆序对--Java代码

算法1(归并排序) $时间复杂度:O(nlogn) 额外空间复杂度:O(n)$利用分而治之的思想,即归并排序。本题目的难点在于while循环中,1. 先把整个数组不断地向下分离,只有一个的时候,进行合并,即left==right2. 哪个大哪个放在前面,即if(nums[i] <= nums[j]){h[hi++] = nums[j++];}else{pairs+=(right-j+1);...

weixin_28756347的博客 179
上一篇: 第四届传智杯初赛(莲子的机械动力学)
下一篇: 蓝桥杯官网填空题(海盗分金币)
雪泡泡
博客等级 码龄5年 350粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值