归并排序和逆序对数量

技术归并排序和逆序对数量 归并排序和逆序对数量归并排序
#includeiostreamusing namespace std;
const int N = 100010;
int q[N];
int

归并排序和逆序对数量

归并排序

#包括牡蛎

使用命名空间标准;

常量整数N=100010

int q[N];

int tmp[N];

void merge_sort(int q[],int l,int r)

{

if(l=r)返回;

int mid=l r 1;

merge_sort(q,l,mid);

merge_sort(q,mid 1,r);

int k=0,i=l,j=mid 1;

而(我=中间j=r)

if(q[I]=q[j])tmp[k]=q[I];

else tmp[k]=q[j];

而(I=mid)tmp[k]=q[I];

而(j=r)tmp[k]=q[j];

对于(i=l,j=0;I=r;I,j)q[I]=tmp[j];

}

int main()

{

int n;

scanf(‘%d ‘,n);

for(int I=0;I n;(一)

{

scanf(‘%d ‘,q[I]);

}

merge_sort(q,0,n-1);

for(int I=0;I n;(一)

{

printf(‘%d ‘,q[I]);

}

}

1.先找中间的点,与快排不一样的是,他要求是位置在中间

2.分成左右两边,归并处理左右两边

3.归并排序,将左右两个有序序列合并成一个有序的序列

逆序对数量

#包含输入输出流

#包含cstring

#包含算法

使用命名空间标准;

typedef长长LL;

常量整数N=100010

int q[N],tmp[N];

LL merge_sort(int q[],int l,int r){ 0

if(l=r)返回0;

int mid=r l 1;

LL res=merge_sort(q,l,mid) merge_sort(q,mid 1,r);

int k=0,i=l,j=mid 1;

而(i=中间j=r)

{

if(q[I]=q[j])tmp[k]=q[I];

其他

{

res=中一1;

tmp[k]=q[j];

}

}

而(I=mid)tmp[k]=q[I];

而(j=r)tmp[k]=q[j];

对于(i=l,j=0;I=r;I,j)q[I]=tmp[j];

返回表示留数

}

int main()

{

int n;

scanf(‘%d ‘,n);

for(int I=0;I n;(一)

{

scanf(‘%d ‘,q[I]);

}

cout merge_sort(q,0,n-1);

返回0;

}

会产生逆序对只会在中间的的左右两边时,此时若我的值大于j的值,那么我后面的数的值必然会大于j的值。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/70025.html

(0)

相关推荐

  • flink 获取kafka数据(使用flink将数据写入到kafka)

    技术Flink中如何进行TableAPI 、SQL 与 Kafka 消息获取这篇文章将为大家详细讲解有关Flink中如何进行TableAPI 、SQL 与 Kafka 消息获取,文章内容质量较高,因此小编分享给大家做个参

    攻略 2021年12月15日
  • Mysql怎样查看数据库大小

    技术Mysql怎样查看数据库大小这篇文章给大家介绍Mysql怎样查看数据库大小,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 命令行进入数据库[root@80 ~]# mysql -uroot –

    攻略 2021年10月25日
  • angular怎么设置全局变量(angular模板使用全局变量)

    技术angular怎么设置全局变量本篇内容主要讲解“angular怎么设置全局变量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“angular怎么设置全局变量”吧!在angu

    攻略 2021年12月21日
  • 在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat

    技术在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat小编给大家分享一下在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat,希望大家阅读完这篇文章之后都有所收获,下面让我们

    攻略 2021年11月26日
  • 39三分之一是多少码,码数码数38又三分之一是什么意

    技术39三分之一是多少码,码数码数38又三分之一是什么意是欧洲鞋码的表示方式,是介于37和38之间,三分之一就是更靠近37码。阿迪的鞋子尺码不是以0.5进位的,是以2/3进位的,因此就会出现41又1/3,41又1/3等鞋

    生活 2021年10月20日
  • Scala尾递归的跟踪调用及局限方法是什么

    技术Scala尾递归的跟踪调用及局限方法是什么这篇文章主要讲解了“Scala尾递归的跟踪调用及局限方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala尾递归

    攻略 2021年12月9日