我是靠谱客的博主 兴奋跳跳糖,最近开发中收集的这篇文章主要介绍逆序对数(归并排序)逆序对数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

逆序对数

问题描述:
给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。

逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。

输入格式
第一行包含整数n,表示数列的长度。

第二行包含 n 个整数,表示整个数列。

输出格式
输出一个整数,表示逆序对的个数。

数据范围
1≤n≤100000

问题分析

这个题可以用归并排序来写。每次把一个数组分成两个子数组,递归对两边的子数组进行排序,在递归处理排序时可以直接计算各自的逆序对。

关键代码

while (i <= mid && j <= r) {
   
        if (a[i] <= a[j]) res[k ++] = a[i ++];
        else {
   
            res[k ++] = a[j ++];
            cnt += mid - i + 1;
        }
    }

最后

以上就是兴奋跳跳糖为你收集整理的逆序对数(归并排序)逆序对数的全部内容,希望文章能够帮你解决逆序对数(归并排序)逆序对数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部