博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku 2299 Ultra-QuickSort 归并排序求逆序数
阅读量:5056 次
发布时间:2019-06-12

本文共 1121 字,大约阅读时间需要 3 分钟。

归并虽然知道了过程但是敲起代码来还是出现各种小错误。。。唉,,,

View Code
#include 
#include
#define maxn 500007 using namespace std; int a[maxn]; int n; int tmp[maxn]; __int64 ct; void merge(int s,int m,int e) {
int i = s,j = m + 1; int k = 0; while (i <= m && j <= e) {
//s - m 和 m+1 —— e两个数组是已经排好序的 //如果a[i] > a[j]则说明i - m的值都大于a[j]出现逆序数 if (a[i] > a[j]) {
ct += m - i + 1; tmp[k++] = a[j++]; } else {
tmp[k++] = a[i++]; } } while (i <= m) tmp[k++] = a[i++]; while (j <= e) tmp[k++] = a[j++]; for (i = 0; i < k; ++i) {
a[s + i] = tmp[i]; } } void mergesort(int s,int e) {
if (s < e) {
int m = (s + e)/2; mergesort(s,m); mergesort(m + 1,e); merge(s,m,e); } } int main() {
int i; while (~scanf("%d",&n)) {
if (!n) break; ct = 0; for (i = 0; i < n; ++i) scanf("%d",&a[i]); mergesort(0,n - 1); printf("%I64d\n",ct); } return 0; }

转载于:https://www.cnblogs.com/E-star/archive/2012/03/23/2414258.html

你可能感兴趣的文章
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
代码整洁
查看>>
蓝桥杯-分小组-java
查看>>
Java基础--面向对象编程1(类与对象)
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>