题解 | #数组中的逆序对#

数组中的逆序对

https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5

public class Solution {
    int cnt=0;
    public int InversePairs(int [] array) {
        if(array.length != 0){
            divide(array,0,array.length-1);
        }
        return cnt;
    }
    public void divide(int[] array,int start,int end){
        //递归终止条件
        if(start >= end)   return;
        //取中
        int mid=start+(end-start)/2;
        //分
        divide(array,start,mid);
        divide(array,mid+1,end);
        //治
        merge(array,start,mid,end);
    }
    public void merge(int[] array,int start,int mid,int end){
        //临时数组
        int[] tmp=new int[end-start+1];
        //i和j表示两个分数组的左下标,k表示临时数组的当前下标
        int i=start,j=mid+1,k=0;
        while(i<=mid && j<= end){
            //如果前小于后,则存前,前右移
            if(array[i]<=array[j]){
                tmp[k++]=array[i++];
            }
            //如果前大于后,则存后,后右移-------***此时存在逆序对,要进行比较
            else{
                tmp[k++]=array[j++];
                //如果此时前大于后,那么现有前到最后的元素都会大于后
                cnt=(cnt+mid-i+1)%1000000007;
            }
        }
        //未遍历完的直接放在右侧
        while(i<=mid){
            tmp[k++]=array[i++];
        }
        while(j<=end){
            tmp[k++]=array[j++];
        }
       // 将临时数组的值覆盖原来数组
        for( k=0;k<tmp.length;k++){
            array[start+k]=tmp[k];
        }
     }
}

#归并排序#
全部评论

相关推荐

07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务