1
- /**
2
- * Merge Sort is an algorithm where the main list is divided down into two half
3
- * sized lists, which then have merge sort called on these two smaller lists
4
- * recursively until there is only a sorted list of one.
1
+ /*
2
+ * MergeSort implementation.
3
+ *
4
+ * Merge Sort is an algorithm where the main list is divided down into two half sized lists, which then have merge sort
5
+ * called on these two smaller lists recursively until there is only a sorted list of one.
5
6
*
6
7
* On the way up the recursive calls, the lists will be merged together inserting
7
8
* the smaller value first, creating a larger sorted list.
8
9
*/
9
10
10
11
/**
11
- * Sort and merge two given arrays
12
- * @param {Array } list1 - sublist to break down
13
- * @param {Array } list2 - sublist to break down
14
- * @return {Array } merged list
12
+ * Sort and merge two given arrays.
13
+ *
14
+ * @param {Array } list1 Sublist to break down.
15
+ * @param {Array } list2 Sublist to break down.
16
+ * @return {Array } The merged list.
15
17
*/
16
- /*
17
- * Doctests
18
- * > merge([5, 4],[ 1, 2, 3])
19
- * [1, 2, 3, 5, 4]
20
- * > merge([],[1, 2])
21
- * [1, 2]
22
- * > merge([1, 2, 3], [1])
23
- * [1, 1, 2, 3]
24
- * > merge([], [])
25
- * []
26
- *
27
- * > mergeSort([5, 4])
28
- * [4, 5]
29
- * > mergeSort([8, 4, 10, 15, 9])
30
- * [4, 8, 9, 10, 15]
31
- * > mergeSort([1, 2, 3])
32
- * [1, 2, 3]
33
- * > mergeSort([ ])
34
- * [ ]
35
- */
36
-
37
- function merge ( list1 , list2 ) {
18
+ export function merge ( list1 , list2 ) {
38
19
const results = [ ]
39
20
let i = 0
40
21
let j = 0
@@ -51,11 +32,12 @@ function merge (list1, list2) {
51
32
}
52
33
53
34
/**
54
- * Break down the lists into smaller pieces to be merged
55
- * @param {Array } list - list to be sorted
56
- * @return {Array } sorted list
35
+ * Break down the lists into smaller pieces to be merged.
36
+ *
37
+ * @param {Array } list List to be sorted.
38
+ * @return {Array } The sorted list.
57
39
*/
58
- function mergeSort ( list ) {
40
+ export function mergeSort ( list ) {
59
41
if ( list . length < 2 ) return list
60
42
61
43
const listHalf = Math . floor ( list . length / 2 )
@@ -64,9 +46,3 @@ function mergeSort (list) {
64
46
65
47
return merge ( mergeSort ( subList1 ) , mergeSort ( subList2 ) )
66
48
}
67
-
68
- // Merge Sort Example
69
- const unsortedArray = [ 10 , 5 , 3 , 8 , 2 , 6 , 4 , 7 , 9 , 1 ]
70
- const sortedArray = mergeSort ( unsortedArray )
71
-
72
- console . log ( 'Before:' , unsortedArray , 'After:' , sortedArray )
0 commit comments