码迷,mamicode.com
首页 > 其他好文 > 详细

分治法求逆序数

时间:2015-09-15 16:23:45      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

     逆序数=两子序列的逆序数+本序列逆序数

     我们知道在对序列进行二路归并排序的时候,要将序列拆分成若干子序列,先将子序列排序,再合并子序列构成最终排序后的序列。二路归并算法还有一个特点,在进行归并操作时候的两个子序列是有序序列,所以,我们可以利用这一点,在归并子序列的时候,其中的子序列内部的逆序数必然是0,这时候能产生逆序数的情况必然处于两个子序列之间。

    
例:有两个子序列  1467和2358  

在利用归并算法进行排序时,  i,j 分别首先指向两序列首部(i= 0,j=0),即1和2。1<2,所以关于1的逆序数为j=0。接下来i++, i=1 指向4,4>2,j向右移动,j最终指向5,j=2,所以关于5的逆序数为2(5前面的2,3均小于4)。 同理关于6,7的逆序数均为3。所以整个序列的逆序数=2+3+3+两子序列未有序前的逆序数。

分治法求逆序数

标签:

原文地址:http://www.cnblogs.com/yingxinff/p/4810460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!