technical-summary/src/algorithm-question/mergeArray at master · chenqf/technical-summary · GitHub
Skip to content

Latest commit

 

History

History

Folders and files

/**
 * 方法1 性能较差
 * 时间复杂度为 n²
 */
function mergeArray(arr1 = [],arr2 = []) {
    let result = [];
    while (arr1.length && arr2.length){     //此处时间复杂度为 n
        result.push(arr1[0] < arr2[0] ? arr1.shift():arr2.shift()); // 此处时间复杂度为 n
    }
    return result.concat(arr1,arr2);
}
/**
 * 方法2 性能较好
 * 时间复杂度为 n
 */
function mergeArray(arr1 = [],arr2 = []) {
    let result = [],
        len1 = arr1.length,
        len2 = arr2.length,
        k = 0,
        i = 0,
        j = 0;
    while (true){
        if(i >= len1 && j >= len2){
            return result;
        }else if(i >= len1){
            result[k] = arr2[j];
            j++;
        }else if(j >= len2){
            result[k] = arr1[i];
            i++;
        }else if(arr1[i] > arr2[j]){
            result[k] = arr2[j];
            j++;
        }else{
            result[k] = arr1[i];
            i++;
        }
        k++;
    }
}