求一个序列中逆序对的数目

博客探讨如何高效地计算序列中的逆序对,对比了两种方法:直接比较导致的时间复杂度为O(n^2),而采用分治法结合归并排序的方法能将时间复杂度降低到O(n*log(n))。
摘要由CSDN通过智能技术生成

例:求出 3 2 1 4 5序列中逆序对的个数
答:明显可以看出,逆序对有(3,2),(3,1),(2,1),因而逆序对的个数为3
思路:方法一:将每一个数字都和后面的数字进行大小比较,这样计算数量级为O(n^2)
方法二:利用分治法,将序列分为左序列和右序列,在将左序列和右序列归并的过程中统计逆序对的个数

#include<iostream>
#include<vector>
long long num_of_pairs = 0;
using namespace std;
int main()
{
    void mergesort(int first, int last, <
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值