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

宁波教育学会网站建设娄底网站建设企业

宁波教育学会网站建设,娄底网站建设企业,如何给网站加cdn,中文网站建设做道简单一点的题巩固一下 归并排序实现步骤 将整个区间 [l, r] 划分为 [l, mid] 和 [mid1, r]。 递归排序 [l, mid] 和 [mid1, r]。 将左右两个有序序列合并为一个有序序列。 题目描述 给定一个长度为 n 的整数数列,请计算数列中的逆序对的数量。 逆序对的定义…

做道简单一点的题巩固一下

归并排序实现步骤
将整个区间 [l, r] 划分为 [l, mid] 和 [mid+1, r]。
递归排序 [l, mid] 和 [mid+1, r]。
将左右两个有序序列合并为一个有序序列。

题目描述

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

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

输入格式
输入共两行。
第一行包含整数 n,表示数列的长度。
第二行包含 n 个整数,表示整个数列。

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

数据范围
1≤n≤100000
数列中的元素的取值范围 [1,1e9]。

输入样例
6
2 3 4 5 6 1

输出样例
5

具体实现
实现思路:

可以将所有的逆序对整体分为3大类

两个数同时出现在左半边(红色);
两个数同时出现在右半边(绿色);
一个数在左半边,一个数在右半边(黄色)。

因此,我们在归并排序的同时便要记录逆序对的个数。

红色情况时逆序对数量:merge_sort(l,mid);
绿色情况时逆序对数量:merge_sort(mid+1,r);
黄色情况时逆序对数量:先将左右两边分别变为有序序列,然后双指针进行比较,先选取右边序列当中第一个元素,判断左边序列当中有几个元素大于他,便有几个逆序对(即分别选取右边序列中的每一个元素,然后分别遍历左边序列当中的每个元素,进行比较判断,最后累加起来)。

代码注解:

n的最大值为100000,我们计算最坏情况,即数列时降序排列,就一共有 n(n-1)/2 个逆序对,即 5*1e9 个逆序对,可能会有大于 int 值的情况,因此使用 long long 进行存储。
因为左右两个均为有序数列,所有当左边序列第 i 个元素大于右边序列第 j 个元素的时候,左边序列 [i,mid] 都严格大于右边序列第 j 个元素,即 mid-i+1 个逆序对,就是我们归并排序归并的过程,所以每当我们输出一个 q[i]>q[j] 的情况,便在逆序对个数上加一个 mid-i+1 。
要注意 merge_sort 的返回值类型变为 long long ,否则会造成数据过多时无法AC。

实现代码
 

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N=100010;
int n;
int q[N],temp[N];
ll merge_sort(int q[],int l,int r)
{if(l>=r){return 0;}else{int mid=l+r>>1;ll res=merge_sort(q,l,mid)+merge_sort(q,mid+1,r);int k=0,i=l,j=mid+1;while(i<=mid&&j<=r){if(q[i]<=q[j]){temp[k]=q[i];k++;i++;}else{temp[k]=q[j];k++;j++;res+=mid-i+1;}}while(i<=mid){temp[k]=q[i];k++;i++;}while(j<=r){temp[k]=q[j];k++;j++;}for(i=l,j=0;i<=r;i++,j++){q[i]=temp[j];}return res;}
}
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>q[i];}cout<< merge_sort(q,0,n-1)<<endl;system("pause");return 0;
}

http://www.yayakq.cn/news/186876/

相关文章:

  • 服饰技术支持 东莞网站建设云南网站建设小程序开发
  • 东莞seo网站制作报价wordpress 下载短代码
  • 如何在淘宝客上做自己的网站汕头网站建设网站建设
  • 手机刷网站排名软件wordpress分类信息导航
  • 湖南手机响应式网站建设企业电子商务网站预算模板
  • 网站宣传的方法主要有免费生成二维码
  • 建设部科研申报网站用着不好网站新闻打不开
  • 淘宝网站推广怎么做洛可可设计公司总部
  • 四川建设人才网网站wordpress不显示评论框
  • 建设网站的申请大连建设网官网首页
  • 做网站要学一些什么川菜餐馆网站建设模板美食餐厅企业建站php源码程序
  • 自己的域名怎么做网站公众号运营怎么做
  • 建手机网站教程服装网页设计图
  • 免费图片制作app软件哪个好佛山网络公司 乐云seo
  • 建网站一般多少钱幸福里百度应用下载
  • 网站建设招标方案模板短视频矩阵营销
  • 知春路网站建设网页制作费用预算
  • 网站开启伪静态计算机科学与技术 开题报告 网站建设
  • 国开机考网站界面设计景点网站怎么做
  • 做网站 什么后缀免费个人域名邮箱
  • 制作网站网页设计策划一个网站
  • 江都住房和建设局网站鼓楼福州网站建设
  • 下载学校网站模板下载沈阳建设工程信息网职称公示2013年
  • 沈阳市和平区建设局网站牡丹江在哪个城市
  • vs做网站如何输出英文网站建设cms
  • 介绍一个做美食的网站wordpress 下一页 模板
  • 小程序 网站 开发云主机网站
  • 做一个什么样的网站最新新闻热点事件2022年9月
  • 福建注册建设中心网站宁夏网站设计
  • 做网站的哪家好外贸电子网站