分治-求排列的逆序数

问题描述

笨方法: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:归并排序并计算逆序数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,589评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,086评论 0 15
  • 我今天想表达我内在的感恩。 感恩爸爸妈妈,在他们艰难的时候把我生下来。虽然没有无时不刻的陪伴着我,但是在我生病的时...
    黄诗韵17觉醒阅读 2,312评论 2 3
  • 黄瓜清脆,熏鱼去了刺入口绵软富含脂肪、蛋白质独特的香味,而热量极低,如果只放蔬菜,家里的男人和孩子肯定吃不上几口,...
    孔雀东南飞飞阅读 3,401评论 6 14
  • 今天考完试了,状态能比昨天恢复一些,不过感觉,又并不是什么好兆头。 拉着我妈刚去买了点水果,路上跟她聊了好多。 她...
    Vano_阅读 1,137评论 0 0