给你两个整数,生成有序数组
nums1和nums2请你 合并
nums2到nums1中,使合并后的数组同样按 非递减顺序 排列。
示例 1:
输入:m = 3, n = 3 输出:[1,2,2,3,5,6]示例 2:
输入:m = 1, n = 0 输出:[1]示例 3:
输入 m = 0, n = 1 输出:[1]
解题思路:
1. 同时遍历数组1和数组2, 判断两个数组中那个比较小,将小的数放入到新的数组中。
2. 任何一个数组遍历完之后,跳出循环
3. 判断那个数组先遍历完毕,然后将另一个数组的剩余值存到新数组中。
public class Test01{
public static void main(String[] args){
int[] arr1 = getArray(9);
int[] arr2 = getArray(6);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(joinArray(arr1, arr2)));
}
/*
用于数组的生成
*/
public static int[] getArray(int num){
Random random = new Random();
int[] arr = new int[num];
for(int i =0,i<num;i++){
arr[i] = random.nextInt(1,100);
}
Test01.sortArray(arr);
retrun arr;
}
/*
用于数组的排序
*/
public static int[] sortArray(int[] arr){
// 冒泡排序
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
/*
进行数组的合并
*/
public static int[] joinArray(int[] arr1,int[] arr2){
int[] arr3 = new int[arr1.length+arr2.length];
// 需要三个指针用来遍历三个数组
int index1,index2,index3;
while(index1<arr.length && index2<arr2.length){
if(arr1[index1] <= arr2[index2]){
arr3[index3] = arr1[index1];
index1++;
}else{
arr3[index3] = arr2[index2];
index2++;
}
index3++;
}
// 循环遍历结束后,把剩余的数组放入到新数组中去
if(index1==arr1.length){
while(index2<arr2.lenth){
arr3[index3] = arr2[index2];
index2++;
index3++;
}
}
if(index2==arr2.length){
while(index1<arr1.lenth){
arr3[index3] = arr1[index1];
index1++;
index3++;
}
}
return arr3;
}
}
文章介绍了如何将数组nums2合并到nums1中,保持合并后数组的非递减顺序,通过比较元素值并使用冒泡排序实现。





