美文网首页
分治-求排列的逆序数

分治-求排列的逆序数

作者: Co_zy | 来源:发表于2017-10-04 15:28 被阅读0次

问题描述

笨方法:O(n2)
分治O(nlogn)

1)将数组分成两半,分别求出左半边的逆序数和右半边的序数
2)再算有多少逆序是由左半边去一个数和右半边取一个数构成(要求O(n)实现)
解决关键:左半边和右半边都是排好序的.比如,都是从大到小排序的,这样,左右半边只需要从头到尾各扫一遍,就可以找出由量变各取一个数构成的逆序个数
下图是上面2)的图示



首先在排好序后,我们可以得到在本组内,逆序数的个数,然后左右各扫一遍,如上图,如果i<j,那么i后面的书也小于j,肯定不能构成逆序数,j++,当j=5时,i>j,i往后走i++,一直到3,此时不构成,j++,i=3,j=2,构成逆序数,所以得出上述2)中的情况

总结

由归并排序改进得到,加上计算逆序的步骤
MergeSortAndCount:归并排序并计算逆序数

相关文章

  • 分治 | 求排列的逆序数

    一、题目描述 描述 在Internet上的搜索引擎经常需要对信息进行比较,比如可以通过某个人对一些事物的排名来估计...

  • 分治-求排列的逆序数

    问题描述 笨方法:O(n2) 分治O(nlogn) 1)将数组分成两半,分别求出左半边的逆序数和右半边的序数2)再...

  • 归并排序

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆...

  • 对线代的第一波总结(完结)

    第一章 行列式 一、逆序 逆序数为奇数则为奇排列逆序数为偶数则为偶排列定理:对换改变排列的奇偶性。各元素行标顺次排...

  • 分治求幂

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方

  • 归并排序

    归并排序的基本思路: merge函数将两个有序数列归并到一个有序数列中 根据分治法,利用递归,不断归并有序数列 递...

  • 算法

    有序数组求并集

  • 分治法实例-全排列

    1.问题描述 给出n个元素的所有可能的排列方式。如: [1,2,3]的排列有[1,2,3], [1,3,2],[2...

  • 分治法应用——全排列

    目录 什么是分治法?分析什么是全排列代码(c++)java实现递归结构展示 什么是分治法? 先看分:将一个大问题分...

  • 全排列,递归与分治

    能够用递归和分治解决的,特征都是下一级做的事跟上一级一样(抽象),最后一层做真正的业务。比如n个数字的全排列,抽象...

网友评论

      本文标题:分治-求排列的逆序数

      本文链接:https://www.haomeiwen.com/subject/lbkcyxtx.html