Таринская Татьяна

Образование, карьера и проекты в IT

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

Алгоритм сортировки, основанный на принципе 'разделяй и властвуй'.

← Назад к списку алгоритмов

Сложность

Временная сложность: O(n log n)

Пространственная сложность: O(n)

Реализация

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) {
  const result = [];
  let leftIndex = 0;
  let rightIndex = 0;
  
  while (leftIndex < left.length && rightIndex < right.length) {
    if (left[leftIndex] < right[rightIndex]) {
      result.push(left[leftIndex]);
      leftIndex++;
    } else {
      result.push(right[rightIndex]);
      rightIndex++;
    }
  }
  
  return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
}

Объяснение

Сортировка слиянием разбивает массив пополам, рекурсивно сортирует каждую половину, а затем объединяет отсортированные половины. Это стабильный алгоритм сортировки с гарантированной временной сложностью O(n log n), но требует дополнительной памяти O(n).

Примеры

Ввод: [38, 27, 43, 3, 9, 82, 10]

Вывод: [3, 9, 10, 27, 38, 43, 82]