Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.
Упорядочивание нечётных элементов массива
Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, которая сортирует только нечётные числа внутри переданного массива, оставляя чётные элементы на их местах без изменения порядка.
Ответ
Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.
function sortOdd(numbers) {
const sorted = numbers.filter(number => number % 2 !== 0).sort((a, b) => a - b);
let index = 0;
return numbers.map(number => number % 2 !== 0 ? sorted[index++] : number);
}
Числовой comparator обязателен: стандартный sort без него сравнивает строковые представления. Проверка остатка через !== 0 поддерживает отрицательные нечётные числа. Входной массив не меняется. Время O(n + k log k) для k нечётных элементов.