首页 > 其他分享 >归并排序求逆序对

归并排序求逆序对

时间:2023-10-27 22:45:16浏览次数:33  
标签:mergesort 归并 include return cout int mid 排序 逆序

  #include<iostream>   #include<algorithm>   #include<cstring>   using namespace std;   const int N=1e5+10;   int a[N];   int ans=0;   int tmp[N];   void mergesort(int a[],int l,int r)   {   if(l>=r)return;   int mid=l+r>>1;   mergesort(a,l,mid);   mergesort(a,mid+1,r);   int i=l,j=mid+1;   int k=0;   while(i<=mid&&j<=r)   {   if(a[i]<=a[j])   {   tmp[k++]=a[i++];   }   else   {   tmp[k++]=a[j++];   ans+=mid-i+1;//与i后面的数均构成逆序,个数mid-i+1   }   }   while(i<=mid)tmp[k++]=a[i++];   while(j<=r)tmp[k++]=a[j++];   for(int i=l,j=0;i<=r;i++,j++)a[i]=tmp[j];     }   int main()   {   int n;   cin>>n;   for(int i=1;i<=n;i++)   {   cin>>a[i];   }   mergesort(a,1,n);   // for(int i=1;i<=n;i++)cout<<a[i]<<' ';   cout<<ans<<endl;     return 0;     }

标签:mergesort,归并,include,return,cout,int,mid,排序,逆序
From: https://www.cnblogs.com/Mr-mY/p/17793286.html

相关文章

  • 如何按值对字典进行排序?
    内容来自DOChttps://q.houxu6.top/?s=如何按值对字典进行排序?我从一个数据库中的两个字段读取一个字典的值:一个字符串字段和一个数字字段。字符串字段是唯一的,所以它是字典的键。我可以按键进行排序,但是我如何根据值进行排序呢?注意:我在这里阅读了StackOverflow问题如何......
  • 快速排序C实现
    在数据结构中的快速排序实现,未将原数组排序为递增或递减的序列,该C语言通过指针将原数组进行了改变。low和high的数值交换:voidSwap(int*a,int*b){intp=*b;*b=*a;*a=p;}Partition(分区函数):通过内层while可看出快速排序不是稳定排序算法intPartition(i......
  • Java map详解 - 用法、遍历、排序、常用API等
    java.util中的集合类包含Java中某些最常用的类。最常用的集合类是List和Map。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。本文主要介绍javamap的初始化、用法、map的四种常用的遍历方式、map的排序以及常用ap......
  • 【排序算法】冒泡排序法(C语言)——轻松拿下!
    文章目录一、冒泡排序的原理1.1算法思维:1.2动态图演示:二、实例讲解2.1图解冒泡:第一趟:第二趟第三趟第四趟三、代码讲解3.1定义变量:3.2使用双重循环3.3比较3.4红蓝墨水交换3.5遍历输出代码示例:四、总结一、冒泡排序的原理冒泡排序是一种简单的排序算法,它也是一种稳定的排序方法。其......
  • MySQL建数据库排序规则选择
    MySQL建数据库排序规则选择引言在MySQL数据库中,选择适合的排序规则对于数据的存储和检索非常重要。排序规则决定了字符比较的方式,影响数据库的数据排序和查询结果。本文将介绍MySQL中常见的排序规则,并提供相应的代码示例来帮助读者理解和选择适合自己需求的排序规则。排序规则......
  • Java 练习题02 (包装类 (对字符串进行排序))
    有一个字符串“101,87,88,87,98”对数字由小到大排序。importjava.util.Arrays;publicclassDemo01{publicstaticvoidmain(String[]args){Stringspa="101,87,88,87,98";//1.分割每个数字String[]str=spa.split(",");//2.定义int类型数......
  • Mysql、Oracle 中将汉字(中文)按照拼音首字母排序
    Mysql 将汉字(中文)按照拼音首字母排序ORDERBYCONVERT(表别名.字段名USINGgbk)COLLATEgbk_chinese_ciASC;例子select*from(select'嘉实资产'a,'000830'bunionselect'中金鼎益稳健3号单一资产管理计划'a,'002544'bunionselect......
  • P9771 HUSTFC 2023 排列排序问题 题解
    Question给出一个\(N\)个元素的排序\(a\),我们可以对排列进行一些操作将这个排列切割成若干个序列将其中一些序列翻转将这些序列连接起来得到一个新的排列需要让最后的排列有序Solution这个题的描述有点小问题理解应该是切一次,然后再反转合并,不可能会先合并再切再反转......
  • echarts动态排序柱状图实现
    <template><divid="pubTaxesFsz"style="height:100%;width:100%"></div></template><scriptlang="ts"setupname="PubTaxesFsz">import*asechartsfrom'echarts/core';i......
  • 面试必刷TOP101:12、单链表的排序
    一、题目publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramheadListNode类theheadnode*@returnListNode类*/publicListNodesortInList(ListNodehead){......