Skip to content

Commit fc724ab

Browse files
committed
fix: create unwrapper for type
1 parent f0aefcc commit fc724ab

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/algorithms/sorting/merge-sort/merge-sort.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,37 @@
1+
/**
2+
* Unpacks 'number | undefined' type into 'number'
3+
*
4+
* @private
5+
* @param {number[]} array Numeric array.
6+
* @returns {number} Shifted array value.
7+
*/
8+
const shift = (array) => array.shift() ?? 0
9+
110
/**
211
* Merges two ordered arrays into one ordered array.
12+
*
13+
* @private
314
* @param {number[]} left One of the arrays to be merged.
415
* @param {number[]} right One of the arrays to be merged.
516
* @returns {number[]} Merged array.
617
*/
7-
const merge = (left, right) => {
18+
const merge = (left = [], right = []) => {
19+
/** @type {number[]} */
820
const sorted = []
921

1022
while (left.length && right.length) {
11-
sorted.push(left[0] <= right[0] ? left.shift() : right.shift())
23+
sorted.push(left[0] <= right[0] ? shift(left) : shift(right))
1224
}
1325

1426
return [...sorted, ...left, ...right]
1527
}
1628

1729
/**
1830
* Sorts a numeric array using the merge sort approach.
31+
*
1932
* Time complexity: O(n log n) for best, worst, and average.
2033
* Space complexity: total O(n) auxiliary O(n).
34+
*
2135
* @param {number[]} nums Array to be sorted.
2236
* @returns {number[]} Sorted array.
2337
*/

0 commit comments

Comments
 (0)