题解 | #合并两个有序的数组#

合并两个有序的数组

http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

1.首先题目中说明A数组的大小为两个数组大小之和,所以A数组的后面一定有和B数组等大小的空间。
2.首先想到从A数组的右边向左边添加数据,所以就要倒序比较
3.由于两个数组已经有序,所以只需要将两个数组从右向左依次比较即可
4.将A、B中较大的数据取出,放入A数组的最后,此时指针向前移,依次循环,直到A或B中没有数据
若A中没有数据,则直接将B中的数据依次放入A中
若B中没有数据,则此时数组已经有序,因为A本身就是有序的

这个过程和归并排序的merge过程类似,只是没有创建新的数组来装比较的数据。可以参考归并排序的merge过程。
public void merge(int A[], int m, int B[], int n) {
int lenA = A.length-1;
int i=m-1,j=n-1;
while(i >= 0 && j>= 0){
A[lenA--] = A[i] > B[j] ? A[i--] : B[j--];
}
while(j >= 0)A[lenA--] = B[j--];
}

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务