归并排序求逆序对数
来源:互联网 发布:京东数据分析笔试 编辑:程序博客网 时间:2024/04/25 06:42
参考博客:归并排序求逆序对数
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;//归并排序是借助一个辅助数组来进行排序 int ans = 0;void merge_sort(int *A, int l, int r, int *T) {//A是原数组,T是辅助数组 if(r-l>1){int mid = (l+r)/2;merge_sort(A, l, mid, T);merge_sort(A, mid, r, T);int p = l , q = mid;int i = l;while(p < mid || q < r) {//右边空了或左边还有数并且左边接下来的第一个数小if(q >= r || (p<mid && A[p]<A[q])) T[i++] = A[p++];else {ans += mid-p; //求逆序对数 T[i++] = A[q++]; }//左边空了或右边还有数并且右边接下来的第一个数小 }for(i = l; i < r; i++) A[i] = T[i]; //从辅助空间复制回A数组 这时都是排好序的 }else return ;//如果r-l<=1说明区间元素等于或少于1个自然就返回,将这个作为边界 } int main() {int a[] = {8, 7, 6, 5, 4, 3, 2, 1};int t[8];merge_sort(a, 0, 8, t);for(int i = 0; i < 8; i++) {cout << a[i] << " ";} cout << endl;cout << ans << endl;return 0; }
0 0
- 归并排序求逆序对数)
- 归并排序&求逆序对数
- 归并排序求逆序对数
- 归并排序求逆序对数
- 归并排序求逆序对数
- 求逆序对数(利用归并排序)
- POJ 2299 归并排序 求逆序对数
- 归并排序算法求逆序对数
- 归并求逆序对数
- 归并求逆序对数
- 归并排序及利用归并排序求逆序对数
- 归并排序-逆序对数
- 归并排序求 逆序对数 TOJ 1455 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort(归并排序求逆序对数)
- POJ2299——归并排序求逆序对数
- 归并排序与分治法求逆序对数
- POJ 1804 Brainman (归并排序 -- 求逆序对数)
- 归并排序的实现及利用其求逆序对数
- 正确使用 Volatile 变量
- 【BZOJ1037】[ZJOI2008]生日聚会Party【计数DP】【特殊的姿势】
- 初学lucene-菜鸟篇
- 深度学习(Deep Learning)综述
- 字符串问题
- 归并排序求逆序对数
- day04 onsubmit事件 XML的简介,语法,DTD约束和解析
- 1640: [Usaco2007 Nov]Best Cow Line 队列变换|后缀数组|贪心
- 一个简单的例子说明stable marriage稳定婚姻匹配问题
- 2015-03-22 网易笔试(数据挖掘方向)——邮件事业部
- 程序员求职,有时与能力无关
- PDE7 wave equation: intuition
- tomcat启动过程:main(String args[])总览
- 软件开发流程