Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: merge sort, divide and conquer, algorithm, sorting, time complexity

Как работает сортировка слиянием (merge sort)?

Этот вопрос проверяет понимание алгоритма сортировки слиянием, его временной сложности и принципа "разделяй и властвуй", что важно для оценки навыков алгоритмического мышления.

Короткий ответ

Сортировка слиянием — это эффективный алгоритм, основанный на принципе "разделяй и властвуй". Он рекурсивно делит массив на две половины, пока не останутся массивы из одного элемента, а затем сливает их в отсортированном порядке. Временная сложность составляет O(n log n) в худшем, среднем и лучшем случаях. Алгоритм требует дополнительной памяти O(n) для хранения временных массивов.

Длинный ответ

Как работает сортировка слиянием

Сортировка слиянием (merge sort) — это классический алгоритм сортировки, который использует подход "разделяй и властвуй". Основная идея заключается в том, чтобы разбить исходный массив на более мелкие части, отсортировать их и затем объединить в один отсортированный массив. Этот алгоритм гарантирует стабильную производительность O(n log n) независимо от входных данных, что делает его предпочтительным для больших наборов данных.

Этапы работы

  • Разделение: Массив рекурсивно делится на две половины до тех пор, пока каждый подмассив не будет содержать только один элемент (такой массив считается отсортированным).
  • Слияние: Два отсортированных подмассива объединяются в один отсортированный массив. Для этого сравниваются первые элементы каждого подмассива, и меньший помещается в результирующий массив. Процесс повторяется, пока все элементы не будут перенесены.

Пример кода на JavaScript

function mergeSort(arr) {
  if (arr.length <= 1) return arr;
  const mid = Math.floor(arr.length / 2);
  const left = mergeSort(arr.slice(0, mid));
  const right = mergeSort(arr.slice(mid));
  return merge(left, right);
}

function merge(left, right) {
  let result = [];
  let i = 0, j = 0;
  while (i < left.length && j < right.length) {
    if (left[i] < right[j]) {
      result.push(left[i]);
      i++;
    } else {
      result.push(right[j]);
      j++;
    }
  }
  return result.concat(left.slice(i)).concat(right.slice(j));
}

Применение и вывод

Сортировка слиянием широко используется в ситуациях, где важна стабильность и предсказуемая производительность, например, при сортировке больших файлов или в базах данных. Однако из-за дополнительных затрат памяти она менее эффективна для малых массивов по сравнению с быстрой сортировкой. Вывод: применяйте merge sort, когда требуется гарантированная временная сложность O(n log n) и стабильность, и вы готовы пожертвовать дополнительной памятью.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#merge sort

#divide and conquer

#algorithm

#sorting

#time complexity

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.