How to get the median of two sorted arrays in TypeScript

3 Answers

0 votes
function findMedianOfTwoSortedArrays(arr1: number[], arr2: number[]) {
    const size1: number = arr1.length;
    const size2: number = arr2.length;
    let merged = Array(arr1.length + arr2.length).fill(0);
        
    for (let i: number = 0; i < size1; i++) {
        merged[i] = arr1[i];
    }
    
    for (let i: number = 0; i < size2; i++) {
        merged[i + arr1.length] = arr2[i];
    }
    
    merged.sort();
    
    let total: number = size1 + size2;
    let median: number = 0.0;
    
    if (total % 2 == 0) {
        let mid1 = merged[Math.floor((total - 1) / 2)];
        let mid2 = merged[Math.floor((total / 2))];
        median = parseFloat(mid1 + mid2) / 2.0;
    }
    else {
        median = merged[Math.floor(total / 2)];
    }
    
    return median;
}

const arr1: number[] = [1, 3, 5];
const arr2: number[] = [2, 4, 6];

const median = findMedianOfTwoSortedArrays(arr1, arr2);

console.log("Median: " + median);




/*
run:

"Median: 3.5" 

*/

 



answered Jul 19, 2023 by avibootz
0 votes
function findMedianOfTwoSortedArrays(arr1: number[], arr2: number[]) {
    const size1: number = arr1.length;
    const size2: number = arr2.length;
    let i: number = 0, j: number = 0;
    let mid1: number = -1, mid2: number = -1;
           
    if ((size2 + size1) % 2 == 1) {
        for (let k = 0; k <= (size1 + size2) / 2; k++) {
            if (i != size1 && j != size2) {
                mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
            }
            else if (i < size1) {
                mid1 = arr1[i++];
            }
            else {
                mid1 = arr2[j++];
            }
        }
        return mid1;
    }
    else {
        for (let k = 0; k <= (size1 + size2) / 2; k++) {
            mid2 = mid1;
            if (i != size1 && j != size2) {
                mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
            }
            else if (i < size1) {
                mid1 = arr1[i++];
            }
            else {
                mid1 = arr2[j++];
            }
        }
        return (mid1 + mid2) / 2.0;
    }
}

const arr1: number[] = [1, 3, 5];
const arr2: number[] = [2, 4, 6];

const median = findMedianOfTwoSortedArrays(arr1, arr2);

console.log("Median: " + median);




/*
run:

"Median: 3.5" 

*/

 



answered Jul 19, 2023 by avibootz
0 votes
function findMedianOfTwoSortedArrays(arr1: number[], arr2: number[]) {
    let compare = (i: number, j: number) => { return i - j; }
    
    let merged: number[] = arr1.concat(arr2).sort(compare);
    
    if (merged.length % 2 == 0) {
        return (merged[merged.length / 2 - 1] + merged[merged. length / 2]) / 2;

    }
    
    return merged[Math.floor(merged.length / 2)];
}

const arr1: number[] = [1, 3, 5];
const arr2: number[] = [2, 4, 6];

const median = findMedianOfTwoSortedArrays(arr1, arr2);

console.log("Median: " + median);

 
 
 
 
/*
run:
 
"Median: 3.5"
 
*/


 
 
/*
run:
 
"Median: 3.5"
 
*/

 



answered Jul 20, 2023 by avibootz
...