首页 > 其他分享 >归并排序

归并排序

时间:2023-07-30 23:24:43浏览次数:28  
标签:归并 int mid msort 排序 逆序

求逆序对我用的是归并排序

直接上我在洛谷里做的那道逆序对的题目的归并排序主要代码吧

 1 void msort(int l, int r) {
 2     if (l >= r)return;
 3     int mid = (l + r) >> 1;
 4     msort(l, mid);
 5     msort(mid + 1, r);
 6     int i = l, j = mid + 1, k = l;
 7     while (i <= mid && j <= r) {
 8         if (a[i] >a[j]) {
 9             b[k++] = a[j++];
10             ans += (mid - i + 1);
11             //cout << a[i] << " " << a[j] << endl;
12         }
13         else b[k++] = a[i++];
14     }
15     while (i <= mid)b[k++] = a[i++];
16     while (j <= r)b[k++] = a[j++];
17     for (int i = l; i <= r; i++)a[i] = b[i];
18 }

ans就是最终逆序对的数量啦!

标签:归并,int,mid,msort,排序,逆序
From: https://www.cnblogs.com/DLSQS-lkjh/p/17592333.html

相关文章

  • C#冒泡排序算法
    冒泡排序实现原理冒泡排序是一种简单的排序算法,其原理如下:从待排序的数组的第一个元素开始,依次比较相邻的两个元素。如果前面的元素大于后面的元素(升序排序),则交换这两个元素的位置,使较大的元素“冒泡”到右侧。继续比较下一对相邻元素,重复步骤2,直到遍历到数组的倒数第二......
  • 关于排序的一些小问题
    快速排序模板voidquick_sort(inta[],intl,intr){if(l>=r)return;inti=l-1,j=r+1;x=q[l+r>>1];while(i<j){doi++;while(a[i]<x);doj--;while(a[j]>x);if(i<j)swap(a[i],a[j]);quick_sort(a,l,j),quick_sort(a,j+1,......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 无涯教程-jQuery - Sortable排序函数
    能够排序功能可与JqueryUI中的交互配合使用。此功能可在任何DOM元素上启用可排序功能。单击并将其拖动到列表中的新位置,其他项将调整以适合。默认情况下,可排序项目共享可拖动属性。Sortable-语法$(function(){$("#sortable").sortable();$("#sortable").disabl......
  • 冒泡排序
    #include<stdio.h>voidbubble_sort(intarr[],intsz){ inti=0; for(i=0;i<sz-1;i++) { intj=0; for(j=0;j<sz-1-i;j++) { if(arr[j]>arr[j+1]) { inttmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } }}intmain()......
  • 数组降维-去重-排序
    letarr=[1,23,[121,1,53,[234,342,324,[234,432],234]]]快速实现letarr1=arr.flat(Infinity)//降维letarr2=Array.from(newSet(arr1))//去重,转为数组letarr3=arr2.sort((a,b)=>(a-b))//排序console.log(arr3)数组降维方法1:递归vararr1=[[0,1],[2,......
  • FineBI-点击表头进行排序
      基本思路:1.创建数据集-->orderby${参数1}${参数2}:参数1接收列名,参数2接收asc/desc2.添加模板参数flag,用于标识列名↑或列名↓3.选择所有排序字段-->超级链接-->网络报表(链接自身)-->添加参数col/sort/flag分别等于列名/公式/公式(见图2)4.......
  • 帆软报表实现点击表头排序功能
     FINEREPORT实现跟EXCEL表格一样的,点击表头升降序功能,效果见下图示例:(点击字段切换升降序) 一、创建一个数据查询,并添加数据集参数select*from`purchase_order`orderby${columns}${sort}记得两个参数之间要加个空格  再添加一个参数模板,用来把箭头传进去......
  • 八大排序算法
    1.冒泡排序排序原理:数组元素两两比较,交换位置,大元素往后放,那么经过一轮比较后,最大的元素,就会出现在最大素引处。/***@description冒泡排序*@author:PeiChen*@version1.0*/publicclassBubbleSort{publicstaticvoidmain(String[]args){int[]a......
  • 洛谷 P1347 排序 - 拓扑排序
    P1347排序题意依次给一些具有排序关系的序列,问你在能否在若干个序列之后确定元素的顺序、判断元素关系存在矛盾、判断无法确认元素顺序思路对于每一个排序关系均进行toposort,后面就是toposort判环(出现矛盾),toposort判顺序,无法确认唯一关系。详见代码或看洛谷题解区代码......