public static void main(String[] args) {
int[] data1 = {1, 3, 5, 7};
int[] data2 = {2, 4, 6, 8};
int[] dataMerged = mergeArray(data1, data2);
for (int i = 0; i < dataMerged.length; i++) {
System.out.println(i + " : " + dataMerged[i]);
}
}
public static int[] mergeArray(int[] array1, int[] array2) {
int length = array1.length + array2.length;
int[] arrayMerged = new int[length];
int i = 0;
int j = 0;
int k = 0;
int length1 = array1.length;
int length2 = array2.length;
while (i< length1 && j < length2) {
if (array1[i] < array2[j]) { //拷贝值较小的元素,填充合并数组
arrayMerged[k++] = array1[i++];
} else if (array1[i] > array2[j]) {
arrayMerged[k++] = array2[j++];
} else {
arrayMerged[k++] = array1[i++];
arrayMerged[k++] = array1[j++];
}
}
if (i >= length1) {
while (j < length2) {
arrayMerged[k++] = array2[j++];
}
} else {
while (i < length1) {
arrayMerged[k++] = array1[i++];
}
}
return arrayMerged;
}
将两个已排序数组,合并成另一个。
先要条件:两个数组元素已经有序;数组大小不定。
最后结果:形成一个新数组,包含两个数组的所有元素,并且,新数组是有序的。
代码如上。