题目很简单,就是两个有序数组,合并成一个,合并完了要依然有序。朋友面试的时候问到了,自己闲的没事敲一下,可以优化的版本。
/**
* @program: test
* @description: 两个有序数组合并成一个有序数组
* @author: YangHang
* @create: 2019-08-24 20:33
**/
public class ArraySort {
public static void main(String[] args) {
// 定义两个有序数组
int[] arr1 = {1, 4, 5, 12, 32, 198};
int[] arr2 = {2, 3, 15, 112, 132};
// 合并之后的数组
int[] mergeArr = new int[arr1.length + arr2.length];
// 数组1的索引
int index_arr1 = 0;
// 数组2的索引
int index_arr2 = 0;
// 合并之后数组的索引
int index_merge = 0;
for (int i = 0; i < mergeArr.length; i++) {
// 如果数组1或者数组2已经合并完了,剩下的直接合并另外一个就好了,就不用比较了。
if (index_arr1 == arr1.length) {
for (int j = index_arr2; j < arr2.length; j++) {
mergeArr[index_merge++] = arr2[index_arr2++];
}
break;
} else if (index_arr2 == arr2.length) {
for (int j = index_arr1; j < arr1.length; j++) {
mergeArr[index_merge++] = arr1[index_arr1++];
}
break;
}
if (arr1[index_arr1] <= arr2[index_arr2]) {
mergeArr[i] = arr1[index_arr1];
index_arr1++;
} else {
mergeArr[i] = arr2[index_arr2];
index_arr2++;
}
index_merge++;
}
// print
System.out.println(Arrays.toString(mergeArr));
}
}