package sortandsearch;
import java.util.Arrays;
public class MergeArrays {
public static void main(String[] args) {
int[] nums1 = {0};
int[] nums2 = {1};
merge(nums1,0,nums2,1);
System.out.println(Arrays.toString(nums1));
}
//合并另个有序数组在nums1中,nums1含有m个元素,nums2含有n 个元素, nums1 足够大
//思路1:遍历nums2,找到其每个元素在nums1中应该插入的位置
public static void merge(int[] nums1, int m, int[] nums2, int n) {
int index = m;//默认插入位置是nums1元素值的末尾
for (int i = 0; i < n; i ++) {
while (index > 0 && nums2[i] < nums1[index - 1]) {
nums1[index] = nums1[index - 1];
index --;
}
//找到插入的位置index
nums1[index] = nums2[i];
index = m + i + 1;//更新nums1的末尾位置
}
}
//思路2:直接将nums2插入到nums1的末尾,再进行排序
//思路3:建一个大小为 m + n 的数组,双指针分别遍历nums1,nums2
}
合并两个有序数组的三种思路及JAVA代码
最新推荐文章于 2024-07-26 17:49:42 发布