题目描述
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
解题思路
本题根据题目提示,想到了用插入排序来解决。由于两个数组都排好序了,因此在使用插入排序时,运用了一个标记来优化。
相关知识
(1)将两个数组合并
System.arraycopy(src, srcPos, des, desPos, srcLen);
src:原数组
srcPos原数组开始下标
des目的数组
desPos目的数组开始下标
srcLen原数组长度
自己的代码
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
解题思路
本题根据题目提示,想到了用插入排序来解决。由于两个数组都排好序了,因此在使用插入排序时,运用了一个标记来优化。
相关知识
(1)将两个数组合并
System.arraycopy(src, srcPos, des, desPos, srcLen);
src:原数组
srcPos原数组开始下标
des目的数组
desPos目的数组开始下标
srcLen原数组长度
自己的代码
package leetcode;
import java.util.Arrays;
public class MergeSortedArray {
public void merge(int A[], int m, int B[], int n) {
System.arraycopy(B, 0, A, m, n);
//利用变形的插入排序进行合并
int index = 0;
for(int i = m; i < m + n; i++){
for(int j = index; j < i; j++){
if(A[i] < A[j]) {
int sym = A[i];
for(int k = i; k >j; k--)
A[k] = A[k-1];
A[j] = sym;
index = j;
}
}
}
//System.out.println(Arrays.toString(A));
}
public static void main(String[] args) {
int[] A = new int[9];
A[0] = 1;
A[1] = 3;
A[2] = 3;
A[3] = 6;
A[4] = 7;
int[] B = {1, 1, 2, 8};
MergeSortedArray msa = new MergeSortedArray();
msa.merge(A, 5, B, B.length);
}
}