From 4d1c6ea551016c955f3377f19444eea2ad623bc4 Mon Sep 17 00:00:00 2001 From: Guy Ariely Date: Wed, 5 May 2021 12:24:42 +0300 Subject: [PATCH 1/2] fixed the merge implementation in MergeSort --- Sorts/MergeSort.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Sorts/MergeSort.js b/Sorts/MergeSort.js index b634704cf..102f33e7e 100644 --- a/Sorts/MergeSort.js +++ b/Sorts/MergeSort.js @@ -35,16 +35,19 @@ */ function merge (list1, list2) { - var results = [] + const results = [] + let i = 0 + let j = 0 - while (list1.length && list2.length) { - if (list1[0] <= list2[0]) { - results.push(list1.shift()) + while (i < list1.length && j < list2.length) { + if (list1[i] < list2[j]) { + results.push(list1[i++]) } else { - results.push(list2.shift()) + results.push(list2[j++]) } } - return results.concat(list1, list2) + + return results.concat(list1.slice(i), list2.slice(j)) } /** From 2022a74286e65731d48e325b7d44c8182d3881b9 Mon Sep 17 00:00:00 2001 From: Guy Ariely Date: Sat, 22 May 2021 14:41:53 +0300 Subject: [PATCH 2/2] fixed mergeSort algorithm --- Sorts/MergeSort.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sorts/MergeSort.js b/Sorts/MergeSort.js index 102f33e7e..8e2128f04 100644 --- a/Sorts/MergeSort.js +++ b/Sorts/MergeSort.js @@ -58,15 +58,15 @@ function merge (list1, list2) { function mergeSort (list) { if (list.length < 2) return list - var listHalf = Math.floor(list.length / 2) - var subList1 = list.slice(0, listHalf) - var subList2 = list.slice(listHalf, list.length) + const listHalf = Math.floor(list.length / 2) + const subList1 = list.slice(0, listHalf) + const subList2 = list.slice(listHalf, list.length) return merge(mergeSort(subList1), mergeSort(subList2)) } // Merge Sort Example -var unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1] -var sortedArray = mergeSort(unsortedArray) +const unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1] +const sortedArray = mergeSort(unsortedArray) console.log('Before:', unsortedArray, 'After:', sortedArray)