forked from MLSA-Mehran-UET/learn2code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmergeTwoSortedArrays.js
More file actions
45 lines (39 loc) · 1.4 KB
/
Copy pathmergeTwoSortedArrays.js
File metadata and controls
45 lines (39 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Function to merge two sorted (increasing) arrays of numbers
function mergeTwoSortedArrays(arr1, arr2) {
// Setup pointers (indexes for traversing arrays), and mergedArray array
let ptr1 = 0
let ptr2 = 0
let mergedArray = []
// Check for empty input
if (arr1.length === 0 && arr2.length === 0) return mergedArray // if both arrays empty return empty mergedArray
if (arr1.length === 0) return arr2 // if arr1 is empty return arr2
if (arr2.length === 0) return arr1 // if arr2 is empty return arr1
// While either pointer is not equal to length of their array:
while (ptr1 < arr1.length && ptr2 < arr2.length) {
// Add arr1[ptr1] to mergedArray array and increase ptr1 by 1
if (arr1[ptr1] <= arr2[ptr2]) {
mergedArray.push(arr1[ptr1])
ptr1++
}
// Add arr2[ptr2] to mergedArray array and increase ptr2 by 1
else if (arr1[ptr1] > arr2[ptr2]) {
mergedArray.push(arr2[ptr2])
ptr2++
}
}
// If ptr1 hasn't traversed all of arr1, push these remaining arr1 values to mergedArray
while (ptr1 < arr1.length) {
mergedArray.push(arr1[ptr1])
ptr1++
}
// If ptr2 hasn't traversed all of arr2, push these remaining arr2 values to mergedArray
while (ptr2 < arr2.length) {
mergedArray.push(arr2[ptr2])
ptr2++
}
return mergedArray
}
// Driver code to test above
const array1 = [0, 3, 4, 31]
const array2 = [4, 6, 30]
console.log(mergeTwoSortedArrays(array1, array2)) // [0, 3, 4, 4, 6, 30, 31]