Я хочу улучшить алгоритм сортировки слиянием, чтобы он сортировал два массива и удалял дубликаты. я придумал следующий код:Введен в массив функций undefined
function mergeSortEnhanced(arr, arr2)
{
while(arr2.length)
{
arr.push(arr2.shift());
}
if (arr.length < 2)
return arr;
var middle = parseInt(arr.length/2);
var left = arr.slice(0, middle);
var right = arr.slice(middle, arr.length);
return merge(mergeSortEnhanced(left), mergeSortEnhanced(right));
}
function merge(left, right)
{
var result = [];
while (left.length && right.length) {
if (left[0] < right[0])
{
result.push(left.shift());
}
else if(left[0] > right[0])
{
result.push(right.shift());
}
else
{
result.push(left.shift());
right.shift()
}
}
while (left.length)
result.push(left.shift());
while (right.length)
result.push(right.shift());
return result;
}
var a = [1, 2 , 2 , 1];
var b = [1, 1, 6 ,8];
console.log(mergeSortEnhanced(a, b).join());
Проблема заключается в том, что я столкнуться с ошибкой в четвертой строке
while(arr2.length)
, который гласит, что компилятор не может вычислить длину не определено. я не понимаю, почему второй массив не определен внутри функции и как это исправить
Ой, как я могу быть слепым. Я исправил эту ошибку, проверив, если arr2! = Undefined. он работает сейчас, спасибо – Atin