博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分治法——求逆序数**
阅读量:6952 次
发布时间:2019-06-27

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

// test.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include
#include
using namespace std;int sum;int *b;void merge_sort(int a[], int low, int high);void merge(int a[], int low, int mid, int high);void merge_sort(int a[],int low,int high) { int mid; if (low < high) { mid = (low + high) / 2; merge_sort(a, low, mid); merge_sort(a, mid + 1, high); merge(a, low, mid, high); } } void merge(int a[], int low, int mid, int high) { int i = low; int j = mid + 1; int k = 0; while (i <= mid && j <= high) { if (a[i] <= a[j]) b[k++] = a[i++]; else { b[k++] = a[j++]; sum += (mid - i + 1);//此处重难点 画图思考 } } while (i <= mid) { b[k++] = a[i++]; } while (j <= high) { b[k++] = a[j++]; } for (k = 0, i = low; i <= high; i++, k++) { a[i] = b[k]; } } int main(){ int n, i=0, temp; int a[10000]; cin >> n; sum = 0; b = new int[n]; while(cin >> temp && cin.get() != '\n')a[i++] = temp; merge_sort(a, 0, n - 1); delete[] b; cout << sum << endl; return 0;}

 

 

转载于:https://www.cnblogs.com/ZengWeiHao/p/10451832.html

你可能感兴趣的文章
Have Fun with Numbers及循环链表(约瑟夫问题)
查看>>
acm常用术语
查看>>
YUV格式&像素
查看>>
Asp.Net Core 快速邮件队列设计与实现
查看>>
归并排序板子
查看>>
oralce入门学习
查看>>
编程开发之--java多线程学习总结(4)
查看>>
字符串匹配
查看>>
mysql搭建及数据迁移教程
查看>>
Python文档学习笔记(1)--使用Python 解释器
查看>>
myeclipse 8.5安装freemarker插件方法
查看>>
10 款最好的远程桌面软件
查看>>
JxBrowser之四:对Http Response Code的处理
查看>>
Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)
查看>>
前端模板资源
查看>>
不仅仅是Google,您必须知道的全球十大地图API
查看>>
php排序
查看>>
JSP与Servlet之间传值
查看>>
JavaScript&jQuery.动态删除元素
查看>>
pickle和json模块
查看>>