Blog
JavaScript Merge Function that Mergers Two Arrays Already Sorted from Lowest to Highest Numbers
Posted on July 15, 2015 in Algorithms, JavaScript by Matt Jennings
// Function merges 2 arrays that are already sort from
// Lowest to highest numbers
function mergeSortedArrays(arr1, arr2) {
// Empty array that will have rules from 2 arrays
// pushed into it
var result = [];
// Length of "result" array that will have
// values pushed into
var i = arr1.length + arr2.length - 1;
// Iterate over the entire length of
// arrays "arr1" and "arr2", even if there aren't the same length
// and the interation continues until "arr1" and/or "arr2"
// don't have any more elements
while(arr1.length || arr2.length) {
// If the same element index from "arr1" is greater than
// the same element index from "arr2" pop off that element
// from "arr1" and assign it to the last "result" element
// and decrement by 1
if(arr1[arr1.length - 1] > arr2[arr2.length - 1]) {
result[i--] = arr1.pop();
}
// Else the same element index from "arr2" is greater than
// the same element index from "arr1" pop off that element
// from "arr2" and assign it to the last "result" element
// and decrement by 1
else {
result[i--] = arr2.pop();
}
}
// If there are any remaing element from "arr1",
// because it doesn't have the same elements as "arr2",
// pop off the final element of "arr1" and assign it to
// the "result" array and after that decrement by 1
while(arr1.length) {
result[i--] = arr1.pop();
}
// If there are any remaing element from "arr2",
// because it doesn't have the same elements as "arr1",
// pop off the final element of "arr1" and assign it to
// the "result" array and after that decrement by 1
while(arr2.length) {
result[i--] = arr2.pop();
}
console.log("arr1 elements:", arr1);
console.log("arr2 elements:", arr2);
console.log("result array elements:", result);
}
var array1 = [1, 2, 5, 9];
var array2 = [-9, 4, 8, 15, 20];
/*
JS console output:
"arr1 elements:"
[]
"arr2 elements:"
[]
"result array elements:"
[-9, 1, 2, 4, 5, 8, 9, 15, 20]
*/
mergeSortedArrays(array1, array2);
Leave a Reply