归并排序递归版--配图解

数组中的逆序对

http://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5

归并排序递归版:(便于理解此题)
图片说明
先分后合,分:sort(start,end),合:merge(start,mid,end)
代码:
public class Solution {
private int count;
public int InversePairs(int [] array) {
if(array==null || array.length==0) return -1;
MergeSort(array,0,array.length-1);
return count;
}
private void MergeSort(int[] array,int start,int end){
if(start>=end) return;
int mid=(start+end)/2;
MergeSort(array,start,mid);
MergeSort(array,mid+1,end);
Merge(array,start,mid,end);
}
private void Merge(int[] array,int start,int mid,int end){
int[] temp=new int[end-start+1];
int k=0,i=start,j=mid+1;
while(i<=mid && j<=end){
if(array[i]<=array[j]){
temp[k++]=array[i++];
}else{
temp[k++]=array[j++];
count=(count+(mid-i+1))%1000000007;
}
}
while(i<=mid){
temp[k++]=array[i++];
}
while(j<=end){
temp[k++]=array[j++];
}
for(int m=0; m<k; m++){
array[start+m] = temp[m];
}
}
}

全部评论

相关推荐

如题,这操作。。。。
真烦好烦真烦:既想享受国家的招聘应届生福利,又不想培养新人,我只能说这种企业的ld太过分了
投递美的集团等公司10个岗位 >
点赞 评论 收藏
分享
逆流河上万仙退:可能是发的钱太少了 怕你过来实习还要自己贴钱 意向就不高 省的浪费大家时间 可能你通过了也不会去
点赞 评论 收藏
分享
运营3年修炼中接简历辅导:你的科研项目经历里,只写了你的动作,没有写你的思考和成果,不要只写使用什么进行了什么,这等于罗列你的任务,简历是为了突出你的优秀,你在什么样的任务背景下,克服了什么样的困难,针对性地做了哪些事情,最后达成了什么成果(用数据体现你的成果和效率)
点赞 评论 收藏
分享
评论
10
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务