Skip to content

Commit d220eb9

Browse files
authored
Merge pull request TheAlgorithms#599 from guyariely/master
fixed the merge implementation in MergeSort
2 parents 2c1eba4 + 2022a74 commit d220eb9

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

Sorts/MergeSort.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,19 @@
3535
*/
3636

3737
function merge (list1, list2) {
38-
var results = []
38+
const results = []
39+
let i = 0
40+
let j = 0
3941

40-
while (list1.length && list2.length) {
41-
if (list1[0] <= list2[0]) {
42-
results.push(list1.shift())
42+
while (i < list1.length && j < list2.length) {
43+
if (list1[i] < list2[j]) {
44+
results.push(list1[i++])
4345
} else {
44-
results.push(list2.shift())
46+
results.push(list2[j++])
4547
}
4648
}
47-
return results.concat(list1, list2)
49+
50+
return results.concat(list1.slice(i), list2.slice(j))
4851
}
4952

5053
/**
@@ -55,15 +58,15 @@ function merge (list1, list2) {
5558
function mergeSort (list) {
5659
if (list.length < 2) return list
5760

58-
var listHalf = Math.floor(list.length / 2)
59-
var subList1 = list.slice(0, listHalf)
60-
var subList2 = list.slice(listHalf, list.length)
61+
const listHalf = Math.floor(list.length / 2)
62+
const subList1 = list.slice(0, listHalf)
63+
const subList2 = list.slice(listHalf, list.length)
6164

6265
return merge(mergeSort(subList1), mergeSort(subList2))
6366
}
6467

6568
// Merge Sort Example
66-
var unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1]
67-
var sortedArray = mergeSort(unsortedArray)
69+
const unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1]
70+
const sortedArray = mergeSort(unsortedArray)
6871

6972
console.log('Before:', unsortedArray, 'After:', sortedArray)

0 commit comments

Comments
 (0)