Базовые алгоритмыСортировкиmedium

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

Реализуйте функцию sort аналогичную стандартной Array#sort.

В этой задаче нужно реализовать быструю (O(n×log₂n)) сортировку слиянием.

Функция сортировки принимает два аргумента: массив arr и функцию сравнения двух элементов compareFn. Она ничего не возвращает, сортирует in-place (то есть переставляет элементы в исходном массиве).

Как работает compareFn

compareFn принимает два аргумента a и b и возвращает число:

  • если a идет раньше b → отрицательное число
  • если a идет позже b → положительное число
  • если a и b одинаковые с точки зрения сортировки → ноль

Если compareFn не передается, функция сортирует исходный массив по возрастанию, сравнивая элементы как строки.

Сортировка строк без compareFn

const arr = ["zer", "abc", "a", "xxyyzz", "bz"]; sort(arr); console.log(arr); // ["a", "abc", "bz", "xxyyzz", "zer"]

Сортировка чисел без compareFn

const arr = [12, 5, 1, 3, 23]; sort(arr); console.log(arr); // [1, 12, 23, 3, 5]

Сортировка строк по длине

const arr = ["zerp", "abc", "a", "xxyyzz", "bz"]; sort(arr, (a, b) => b.length - a.length); console.log(arr); // ["xxyyzz", "zerp", "abc", "bz", "a"]