第三章:查找与排序(下)----------- 3.14 逆序对个数

【超详细】计算机操作系统总结及思维导图(汤子瀛版) 计算机操作系统 一.操作系统引论 1.操作系统的目标和功能 目标 方便性 有效性 提高系统资源利用率 提高系统吞吐量 可扩充性 开放性 作用 OS作为用户与计算机硬件系统之间的接口 命令方式 系统调用方式 图标–窗口方式 OS实现了对计算机资源的抽象 2.操作系统的发展过程 未配置操作系统的计算机系统 人工操作方式 用户独占全机 CPU等待人工操作 严重降低... 阅读详情

逆序对个数:一个数列,如果左边的数大,右边的数小,则称这两个数为一个逆序对。求出一个数列中有多少个逆序对。

 PS:学会画示意图,辅助思考。

 假设数组的两段分别有序,借助一个辅助数组来缓存原数组,用归并的思路将元素从辅助数组拷贝回原数组。

 

#include<iostream>
using namespace std;

int nixu=0;

void merge(int arr[],int p,int mid,int r){
	
	int len=r-p+1;
	int helper[len];
	//拷贝到辅助空间的相同位置
	for(int i=0;i<len;i++){
		helper[i]=arr[i];
	} 
	
	//辅助数组的两个指针
	int left=p,right=mid+1;
	
	//原始数组的指针
	int current=p;
	while(left<=mid&&right<=r){
		if(helper[left]<=helper[right]){
			arr[current++]=helper[left++];
		}
		else{  //右边小 
			arr[current++]=helper[right++];
			nixu+=mid-left+1;
		}
	} 
	
	//这样做完后,左边指针可能没到头;右边的没到头也没关系
	while(left<=mid){
		arr[current]=helper[left];
		current++;
		left++;
	} 
}

void sort(int A[],int p,int r){
	if(p<r){
		int mid=p+((r-p)>>1);
		sort(A,p,mid);//对左侧排序
		sort(A,mid+1,r);//对右侧排序
		merge(A,p,mid,r);//合并 
	}
}

int main(){
	int arr[]={1,7,2,9,3,5,6,8};
	int len=8;
	sort(arr,0,7);
	cout<<nixu;
	
	return 0;
}

结果:

手把手教你学Simulink——基于传统电网建模与稳定性分析的场景实例:基于同步发电机的单机无穷大系统建模与稳定性分析 本文详细介绍了使用MATLAB/Simulink进行单机无穷大系统(SMIB)建模与稳定性分析的方法。教程从系统结构设计入手,包含同步发电机、输电线路、无穷大母线等核心模块的建模步骤和参数配置示例。重点讲解了七个关键步骤:项目创建、模块配置、控制系统集成、负载添加(可选)以及仿真运行与结果分析,并提供了具体的MATLAB代码示例。最后通过性能评估指标(功角差、电压跌落、频率偏差)分析系统稳定性,为电力系统动态特性研究提供了实用指导,强调准确参数设置对仿真结果的重要性。 阅读详情

相关推荐

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1101

求逆序对的三种方法

无

qq_52639492的博客 1万+

RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南

本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。

vodka的博客 1098

求逆序数个数(归并排序)

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。比如一个序列为4 5 1 3 2, 那么这个序列的逆序数为7,逆序对分别为(4, 1), (4, 3), (4, 2), (5, 1), (5, 3), (5, 2),(3, 2)。第一行有一个整数n(1

m0_53089164的博客 579

基于CRU和WorldClim的高分辨率(1km)气候数据生成

基于CRU和WorldClim的高分辨率(1km)气候数据生成

lhq7842955的博客 1694

ROS2节点通信实战:用C++手写一个‘智能小车’控制模型(附完整代码)

本文详细介绍了如何使用ROS2和C++构建一个智能小车控制模型,涵盖运动控制节点、电池管理服务、参数动态配置和Rviz可视化等核心功能。通过实战项目演示ROS2节点通信机制,帮助开发者快速掌握机器人开发的关键技术,并提供了完整的代码实现和系统集成方案。

weixin_30607029的博客 262

算法之逆序对儿查找

算法之逆序对儿查找 话说昨晚一夜没休息好,满脑子都是想的这到算法题目。早上决定把它记录下来。对于数组中逆序对儿的查找是非常普遍的一到算法题,各种面试中都会出现它和它的变种。我们首先来看看查找逆序对儿的问题定义: 输入:给定元素各不相同数组; 输出:数组中逆序对儿的个数; 其中,逆序对儿的定义是,给定数组A下标i, j,其中i < j,但是A[i] > A[j],则我们称A[i]和A[...

weixin_34274029的博客 795

SV--对象拷贝、参数化的类

对象拷贝,参数化的类

创芯人--fly的博客 1571

逆序对的几种求法

逆序对的定义 设有一个序列,对于序列中任意两个元素ai,aj,若i&lt;j,ai&gt;aj,则说明ai和aj是一对逆序对。 逆序对的几种求法 1.暴力比较: 写两层循环,时间复杂度为 2.归并排序: 众所周知,归并排序就是将一个序列分成两部分进行排序,然后将排序后的两个序列中的元素一个一个插入(如图) 然后,我们发现,对于两个个正在排列的子序列,若后面的子序列中要插入元素,比...

juruo_hejiarui的博客 3万+

STM32芯片解锁读写保护:更改Option Byte [Error已解决]

解锁读保护:STLink更改Option Byte 变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1) 默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 RDP读保护级别 级别0,无保护, 级别1,使能读保护, 这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止); 当芯片处于级别1的时候,可以把选项字节

HowieXue 薛永浩的博客 2万+

使用Matlab simulink的PLC coder功能进行算法搭建与处理

使用的案例如下: Anti-Windup PID Control Demonstration with Feedforward Control 将其中的PID块生成SCL语言再导入TIA 使用的平台如下: Matlab 2019b TIA portal 15.1 应用:可以在PLC中搭载一些并不方便使用的,或者比较难使用的算法 步骤如下: 首先打开案例,案例地址我放在最下面,点击Run运行仿真,必...

苦走一口田 1万+

求逆序对个数的三种方法(归并排序,树状数组,权值线段树)

求逆序对个数的三种方法 逆序对: 对于一个序列 a1a_1a1​,a2a_2a2​,a3a_3a3​…ana_nan​,如果存在aia_iai​&amp;gt;aja_jaj​且i&amp;lt;j,则aia_iai​和aja_jaj​为一个逆序对。 这里将介绍3种求逆序对对数的方法。 在此之前,默认为你已经会了归并排序,树状数组和线段树。(不会的可以百度学习一下) 1.归并排序求逆序对 这应该是几乎人人都会的方...

Galaxy_yr的博客 6006

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

3.9 两道关于逆序对的题目

Chapter3: 更好的查找与排序算法 9. 用归并排序思想解两道关于逆序对的题目 合并有序数组 题目 给定两个排序后的数组A和B,其中A的末端有足够的缓冲空间容纳B。编写一个方法,将B合并入A并排序 算法 基本思想 其实就是归并排序,只不过不是用额外的空间,空间已经给你了 设置一个指针pc 指数组A的第 arrALen+arrBlen 个元素,即A[arrALen+arrBL...

bloger博客 311

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

线段树/树状数组 | 洛谷P1908 逆序对题解

本文总结了计算逆序对数量的两种高效方法:归并排序和树状数组/线段树。归并排序在排序过程中通过合并阶段统计逆序对,时间复杂度为O(nlogn)。树状数组和线段树则需先离散化数据,通过动态维护和查询区间统计逆序对。树状数组代码更简洁,但线段树适用性更广。文中提供了相关代码实现,并比较了两种数据结构的差异,强调处理离散化和重复元素的技巧。两种方法都能在合理复杂度内解决大规模逆序对问题。

2501_93040725的博客 514

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

邓俊辉数据结构与算法学习笔记-第三章

文章目录第三章 列表aa1 从静态到动态a2 从向量到列表a3 从秩到位置a4 实现bb1循秩访问b2 查找b3 插入和复制b4 删除与析构b5 唯一化c 有序列表c1 有序列表唯一化构思c2 唯一化实现c3 查找d 选择排序d1 选择排序d2 实例d3 实现d4 推敲d5 selectMaxd6 性能e 插入排序e1 插入排序e2 构思e3 对比e4 实例e5 实现e6 性能分析e7 平均性能e8 逆序对 第三章 列表 day 14 a a1 从静态到动态 a2 从向量到列表 a3 从秩到位置 a4

xiaodidadada的博客 383

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构与算法之查找、排序、哈希表

查找:顺序查找、二分查找、哈希表查找、二叉排序树查找; 排序:冒泡、插入、归并、快排; 快排中的Partition函数 对公司所有员工的年龄排序---计数排序 二维数组的查找(剑指offer---面试题3) 详情见“数组”专栏:查找; 旋转数组的最小数组(剑指offer---面试题8) 详情见“数组”专栏:查找; 调整数组顺序使奇数位于偶数前面(剑指offer--...

422

【NOWCODE EIGHT】:二分查找\排序

程序=数据结构+算法,数据结构相当于一套普遍适用的工具,算法相当于一套行之有效的解题方法和解题步骤。Dambisa Moyo 曾经说过:“种一颗树最好的时间是十年前,其次是现在。”所以十年前没有刷题的朋友,现在跟着博主一起刷题吧。数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。❄️ 冰冻三尺非一日之寒❄️,只刷一两天刷法可成不了编程界的耶路撒冷,千里之行始于足下,所以还是得坚持刷题阿,每天记得要上机哟!!!

m0_56902859的博客 206

【JZ51 数组中的逆序对】

描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数 P 。并将 P 对 1000000007 取模的结果输出。 即输出 P mod 1000000007 数据范围: 对于 50% 的数据, size ≤ 104 对于 100% 的数据, size ≤ 105 数组中所有数字的值满足 0 ≤ val ≤ 1000000 要求:空间复杂度 O(n),时间复杂度 O(nlogn) 输入描述: 题目保证输入的数组中没有的相同的数

Sugar_wolf的博客 388

使用归并思想查找数组中的逆序对的数量——Java实现

使用二分归并思想,一个数组的逆序对的数量 = (构成逆序对的数字都在左半部分)左半部分逆序对的数量 + (构成逆序对的数字都在右半部分)右半部分逆序对的数量  + (构成逆序对的数字左半部分一个,右半部分一个)左右两部分的逆序对的数量。 Java代码如下: public class Solution { // 使用归并思想统计数组中的逆序对 public static int

xiaoyi357的博客 767

算法 64式 14、排序算法整理

1 算法思想 这里将寻找最小/大的前k个数,寻找逆序对,线性时间选择(寻找第k小/大的元素),奇偶/大小写字符分别放在前后部分等和排序相关类型的题目,放在了排序而不是查找中。 1.1含义 排序含义:重新排列列表中元素,使其递增或递减。 算法稳定性:若两个元素Ri,Rj对应值相等,经过排序后,Ri仍然在Rj前面,则说明该排序算法是稳定的。 1)插入排序 思想:将待排序元素插入到前面已经排...

qingyuanluofeng的专栏 521

【优选算法】专题七、八——分治(快速排序和归并排序的应用)

可以看下解题思路,主要是要强调“数组分三块”的思想,中间放置基准值,两边分别放置小于/大于基准值的元素,这种思想在接下来的“分治—快排”类的题目有重要作用复习解题思路和代码实现及解析下次写快排代码就应选用“数组分三块”思想,基准值可继续使用“三数取中法”,该题所展现的快排代码实现性能较优秀且简单易懂,排序代码应着重复习本题的版本更容易熟记,其他优化也可以使用(小范围改插入排序)Topk问题的另一种解决方式,复习解题思路复习解题思路复习解题思路和代码实现及解析。

2502_91380778的博客 564

算法分析-分治 归并排序,递归插入排序,二分查找

反正分治的套路就是 相同子问题,递归做,我之前有介绍express源码,其中的中间件使用就是用next()函数一直递归,想看的看我的express源码分析: 分治3步骤: 分解 处理 归并 下面给出归并排序的js代码: 1 var A = [5, 2, 4, 6, 1, 3]; 2 var len = A.length - 1; 3 4 MERGE_SORT...

weixin_34257076的博客 110

分治算法——快排 | 归并思想

使用快排和归并的思想解决题目中的难点

大三小白C++进阶之路 637

逆序对的两种解法(归并排序和树状数组)及其变种问题的一点思考

逆序对问题: Given an array nums, we call (i, j) an important reverse pair if i&lt; j and nums[i]&gt; nums[j]. You need to return the number of important reverse pairs in the given array. 比如说数组arr[]={3,5...

roufoo的博客 618

二分法查找-Python

中心思想: 数列从小到大排序,定义查找的范围 [left,right],每次取中点的数值mid跟target比较,如果相等,则mid为查找目标,如果不等则根据nums[mid]和target的大小缩小查找范围 具体步骤: 1、设定左右指针 2、计算中间值mid,并判断nums[mid]与target的大小 3、如果nums[mid] < target,左指针右移left = mid + 1 4、如果nums[mid] > target,右指针左移right= mid - 1 5、重复2、3、4步

sueayee的博客 899
上一篇: 第三章:查找与排序(下)----------- 3.12 实践_最小可用id是多少
下一篇: 第三章:查找与排序(下)----------- 3.15基础学习_树、二叉树、堆排序
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值