Сортировка слиянием основана на алгоритме «разделяй и властвуй».

При сортировке слиянием мы делим массив до тех пор, пока не останется один элемент. Один элемент будет отсортирован, затем мы объединим отсортированные массивы для сортировки всего массива.

Алгоритм на простом английском языке будет следующим.

  1. Найти середину массива
  2. Разделить массив на две части от середины рекурсивно.
  3. Объединить два отсортированных массива.

Пожалуйста, найдите код javascript, как показано ниже.

функция sort(arr) {

пусть л = 0;

пусть r = обр.длина — 1;

функция mergeSort(l, r) {

if (l < r) {

const mid = Math.floor((l + r)/2);

сортировка слияния (l, середина);

объединить сортировку (середина + 1, г);

слияние (л, середина, г);

}

}

функция слияния (l, середина, г) {

const arr1 = новый массив (середина — l + 1);

const arr2 = новый массив (r — середина);

пусть к = 1;

for (пусть i = 0; i ‹ arr1.length; i++) {

обр1[i] = обр[к];

k++;

}

к = середина + 1;

for (пусть i = 0; i ‹ arr1.length; i++) {

обр2[i] = обр[к];

k++;

}

пусть я = 0,

j = 0;

k = l;

в то время как (i ‹ arr1.length && j ‹ arr2.length) {

если (обр1[i] ‹ обр2[j]) {

обр[к] = обр1[я];

i++;

} еще {

обр[к] = обр2[j];

j++;

}

k++;

}

в то время как (j !== arr2.length) {

обр[к] = обр2[j];

j++;

k++;

}

в то время как (я !== arr1.length) {

обр[к] = обр1[я];

i++;

k++;

}

}

сортировка слиянием (л, г);

обратный обр;

}