function merge(left, right): result = [] while left and right are not empty: if left[0] < right[0]: result.append(left.pop(0)) else: result.append(right.pop(0)) return result + left + right
程式碼
functionmerge(left, right) { let result = []; while (left.length > 0 && right.length > 0) { if (left[0] < right[0]) { result.push(left.shift()); } else { result.push(right.shift()); } } return result.concat(left, right); }
functionmergeSort(arr) { if (arr.length <= 1) return arr; let mid = Math.floor(arr.length / 2); let left = arr.slice(0, mid); let right = arr.slice(mid); return merge(mergeSort(left), mergeSort(right)); }
if (nums.length <= 1) return nums let mid = Math.floor(nums.length / 2) let left = nums.slice(0, mid) let right = nums.slice(mid) return merge(sortArray(left), sortArray(right)) };