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

牛客1018逆序数-归并排序

题目:1018-逆序数_2021秋季算法入门班第十一章习题:线段树、树状数组

归并排序思想:数据结构合集 - 归并排序(非递归与递归算法过程, 效率分析, 稳定性分析)_哔哩哔哩_bilibili

int a[M], b[M]; // a[M]待排序数组 b[M]临时数组
void ms(int l, int r) // 归并排序 merge sort
{if (l >= r)return;int mid = (l + r) / 2;ms(l, mid), ms(mid + 1, r);int k = 0, x = l, y = mid + 1; // 用回溯,进行排序while (x <= mid && y <= r)//对两个片段进行合并{if (a[x] <= a[y])b[k++] = a[x++];elseb[k++] = a[y++]; }while (x <= mid)b[k++] = a[x++];while (y <= r)b[k++] = a[y++];// 上面的 k从0开始往b[i]记录,所以这里的 j也是从0开始for (int i = l, j = 0; i <= r; i++, j++)a[i] = b[j];
}

逆序数题目的代码只要加一个计算即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m, op;
const int M = 1e5 + 10;
int a[M], b[M]; // a[M] 待排序数组 b[M]临时数组
int ans;
void ms(int l, int r) // 归并排序 merge sort
{if (l >= r)return;int mid = (l + r) / 2;ms(l, mid), ms(mid + 1, r);int k = 0, x = l, y = mid + 1; // 用回溯,进行排序while (x <= mid && y <= r) // 对两个片段进行合并{if (a[x] <= a[y])b[k++] = a[x++];else // 此处说明a[x]>a[y],是逆序对,// 因为每个片段内都是升序的,所以有mid-x+1个数大于a[y]b[k++] = a[y++], ans += mid - x + 1;}while (x <= mid)b[k++] = a[x++];while (y <= r)b[k++] = a[y++];// 上面的 k从0开始往b[i]记录,所以这里的 j也是从0开始for (int i = l, j = 0; i <= r; i++, j++)a[i] = b[j];
}
void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];ms(1, n);cout << ans;
}signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;// cin >> t;while (t--){solve();}
}

http://www.xdnf.cn/news/4004.html

相关文章:

  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化
  • 【PaaS与AI融合】MLOps平台的架构设计
  • DHCP服务器配置
  • PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
  • HTTP协议
  • 如何判断node节点是否启用cgroup?
  • 深入浅出数据库规范化的三大范式
  • 网络传输中字节序
  • 线程局部存储----TLS
  • seaborn
  • suna工具调用可视化界面实现原理分析(二)
  • 黑马点评day02(缓存)
  • 五一の自言自语 2025/5/5
  • 基于python的哈希查表搜索特定文件
  • 【C/C++】各种概念联系及辨析
  • Cadence高速系统设计流程及工具使用
  • [C++] 小游戏 决战苍穹
  • 《Java 高并发程序设计》笔记
  • NSOperation深入解析:从使用到底层原理
  • 千锋教育Ansible自动化运维实战教程从入门到精通
  • 基于windows安装MySQL8.0.40
  • 2025 年最新树莓派 Pico 连接 ESP8266 模块实现 WiFi 通信、搭建 TCP 服务器实现数据交互详细教程
  • 【多线程】九、常见的锁 读者写者问题
  • 「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例
  • 【爬虫】微博热搜机
  • 网络原理 TCP/IP
  • 代码异味(Code Smell)识别与重构指南
  • [网安工具] 浏览器站点指纹识别插件 —— Wappalyzer · 使用手册
  • R004 -计算机硬件基础
  • 每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)