题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
package com.wuqg5518.JavaSE;
/**
- @author wuqg5518
- @create 2022-03-19 11:14
- 合并两个数组:给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组.
- 解题思路:从后往前遍历数组,比较两个数组的最大值,并将最大值放在A数组的最后。 */
public class mergeTwoArray {
public void merge(int A[], int m, int B[], int n) {
int i=m-1; //A数组有数据的最大下标
int j=n-1; //B数组的最大下标
int len = m+n; //A数组的最大下标
int count = 1; //计数器
for(;i>=0 && j>=0;){//情况一:两个数组都有值
if(A[i]>=B[j]){
A[len-count] = A[i];
i--;
}else{
A[len-count] = B[j];
j--;
}
count++;
}
if(j>=0){//情况二:只有B数组有值
for(int k=j;k>=0;k--){
A[len-count] = B[k];
count++;
}
}
//情况三:只有A数组有值,直接返回
System.out.println(A);
}
}
