To merge two sorted arrays without using extra space, please follow the below steps:
- You can utilize the fact that both arrays are already sorted.
- You can perform an in-place merge by rearranging the elements in one of the arrays.
- Start from the last elements of both arrays and compare them.
- Place the larger number at end of first array.
- Decrease both the array index and move to the previous position.
- Continue this process until all elements are processed.
- if anything left in 2nd array then copy it at last of 1st array.
1
javapublic class MergeSortedArrays {public static void merge(int[] nums1, int m, int[] nums2, int n) {int i = m - 1; // index of last element in nums1 int j = n - 1; // index of last element in nums2
int k = m + n - 1; // index of last position in merged array
// Starting from the last elements of both arrays and comparing them while (i >= 0 && j >= 0) { if (nums1[i] >= nums2[j]) { nums1[k] = nums1[i];
i--; } else { nums1[k] = nums2[j];
j--; } k--; } // If there are remaining elements in nums2, copy them to nums1
while (j >= 0) {nums1[k] = nums2[j];
j--;
k--; } } public static void main(String[] args) { int[] nums1 = {1, 3, 5, 0, 0, 0}; // sorted array with extra space for merging int[] nums2 = {2, 4, 6}; // sorted array int m = 3; // number of elements in nums1 int n = 3; // number of elements in nums2 merge(nums1, m, nums2, n);
// Print the merged array for (int num : nums1) { System.out.print(num + " "); } } }The output of the given example would be: `1 2 3 4 5 6`, which represents the merged sorted array.