Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).
Напишите функцию, объединяющую два отсортированных по возрастанию массива в новый отсортированный массив без использования sort, spread, concat и аналогичных методов объединения.
Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).
Для массивов чисел без NaN, уже отсортированных по возрастанию:
function mergeSorted(a, b) {
const result = [];
let i = 0, j = 0, k = 0;
while (i < a.length && j < b.length) {
result[k++] = a[i] <= b[j] ? a[i++] : b[j++];
}
while (i < a.length) result[k++] = a[i++];
while (j < b.length) result[k++] = b[j++];
return result;
}
Исходные массивы не изменяются, повторы сохраняются. Пустые массивы обрабатываются теми же циклами, запрещённые методы объединения не используются.