算法—合并排序—js(场景:大数据且需稳定性)
合并排序基本思想(稳定且高效)
将数组递归拆分为最小单元,合并两个有序数组。
特点:
时间复杂度:O(n log n)
空间复杂度:O(n)
稳定排序
// 合并排序-分解
function mergeSort(arr) {if (arr.length < 2) return arr;const mid = Math.floor(arr.length / 2);let left = arr.slice(0, mid);let right = arr.slice(mid)if (left.length > 1) left = mergeSort(left);if (right.length > 1) right = mergeSort(right);return merge(left,right)
};// 合并排序-合并排序
function merge(left,right) {let result = [], i = 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, ...left.slice(i), ...right.slice(j)];
};