我在面試中被問到,我的回答與此類似,由于最后的回圈而錯誤。
const newSortArrays = (arr1, arr2) => {
let output = [];
while (arr1.length && arr2.length) {
if (arr1[0] < arr2[0])
output.push(arr1[0] < arr2[0] ? arr1.shift() : arr2.shift())
}
return [...output, ...arr1, ...arr2]
}
uj5u.com熱心網友回復:
你在說什么——“排序”兩個本身已經排序的陣列——被稱為合并。這就是你這樣做的方式:
function merge( left = [] , right = [] ) {
const merged = new Array( left.length right.length );
let i = 0 ;
let j = 0 ;
let k = 0 ;
// while both lists have items
while ( i < left.length && j < right.length ) {
const x = left[i];
const y = right[j];
if ( x <= y ) {
merged[k ] = x;
i;
} else {
merged[k ] = y;
j;
}
}
// if the left list still has items, take them
while ( i < left.length ) {
merged[k ] = left[ i ];
}
// if the right list still has items, take them
while ( j < right.length ) {
merged[k ] = right[ j ];
}
return merged;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365175.html
標籤:javascript 算法 大O
上一篇:更改陣列中特定物件的值
