From ad15b5f3049af25d5cf6738bd2bf5b02a7bff566 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 6 Jan 2020 19:49:42 -0500 Subject: [PATCH 1/2] improve merge sort example --- src/runtimes/04-merge-sort.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/runtimes/04-merge-sort.js b/src/runtimes/04-merge-sort.js index 0279161f..efb9c7dc 100644 --- a/src/runtimes/04-merge-sort.js +++ b/src/runtimes/04-merge-sort.js @@ -5,22 +5,20 @@ const assert = require('assert'); * Merge two arrays in asc order * @example * merge([2,5,9], [1,6,7]) => [1, 2, 5, 6, 7, 9] - * @param {array} array1 - * @param {array} array2 + * @param {array} a + * @param {array} b * @returns {array} merged arrays in asc order */ -function merge(array1 = [], array2 = []) { +function merge(a = [], b = []) { const merged = []; - let array1Index = 0; - let array2Index = 0; + let ai = 0; + let bi = 0; // merge elements on a and b in asc order. Run-time O(a + b) - while (array1Index < array1.length || array2Index < array2.length) { - if (array1Index >= array1.length || array1[array1Index] > array2[array2Index]) { - merged.push(array2[array2Index]); - array2Index += 1; + for (let ai = 0, bi = 0; ai < a.length || bi < b.length;) { + if(ai >= a.length || a[ai] > b[bi]) { + merged.push(b[bi++]); } else { - merged.push(array1[array1Index]); - array1Index += 1; + merged.push(a[ai++]); } } return merged; @@ -46,7 +44,7 @@ function sort(array = []) { return array[0] > array[1] ? [array[1], array[0]] : array; } // slit and merge - const mid = size / 2; + const mid = parseInt(size / 2, 10); return merge(sort(array.slice(0, mid)), sort(array.slice(mid))); } // end::sort[] @@ -59,3 +57,4 @@ assert.deepStrictEqual(sort(), []); assert.deepStrictEqual(merge([2, 5, 9], [1, 6, 7]), [1, 2, 5, 6, 7, 9]); assert.deepStrictEqual(merge(), []); +assert.deepStrictEqual(merge([3, 5, 7], [2, 4]), [2, 3, 4, 5, 7]); From 3901188e613f85bf99e4a7b520a496f7c4e404c8 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Wed, 19 Aug 2020 17:48:50 -0400 Subject: [PATCH 2/2] chore(sorting): clean up variables --- src/runtimes/04-merge-sort.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/runtimes/04-merge-sort.js b/src/runtimes/04-merge-sort.js index efb9c7dc..fe7c87a9 100644 --- a/src/runtimes/04-merge-sort.js +++ b/src/runtimes/04-merge-sort.js @@ -11,11 +11,9 @@ const assert = require('assert'); */ function merge(a = [], b = []) { const merged = []; - let ai = 0; - let bi = 0; // merge elements on a and b in asc order. Run-time O(a + b) for (let ai = 0, bi = 0; ai < a.length || bi < b.length;) { - if(ai >= a.length || a[ai] > b[bi]) { + if (ai >= a.length || a[ai] > b[bi]) { merged.push(b[bi++]); } else { merged.push(a[ai++]);