Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ad15b5f

Browse files
improve merge sort example
1 parent 5628a27 commit ad15b5f

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

‎src/runtimes/04-merge-sort.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,20 @@ const assert = require('assert');
55
* Merge two arrays in asc order
66
* @example
77
* merge([2,5,9], [1,6,7]) => [1, 2, 5, 6, 7, 9]
8-
* @param {array} array1
9-
* @param {array} array2
8+
* @param {array} a
9+
* @param {array} b
1010
* @returns {array} merged arrays in asc order
1111
*/
12-
function merge(array1 = [], array2 = []) {
12+
function merge(a = [], b = []) {
1313
const merged = [];
14-
let array1Index = 0;
15-
let array2Index = 0;
14+
let ai = 0;
15+
let bi = 0;
1616
// merge elements on a and b in asc order. Run-time O(a + b)
17-
while (array1Index < array1.length || array2Index < array2.length) {
18-
if (array1Index >= array1.length || array1[array1Index] > array2[array2Index]) {
19-
merged.push(array2[array2Index]);
20-
array2Index += 1;
17+
for (let ai = 0, bi = 0; ai < a.length || bi < b.length;) {
18+
if(ai >= a.length || a[ai] > b[bi]) {
19+
merged.push(b[bi++]);
2120
} else {
22-
merged.push(array1[array1Index]);
23-
array1Index += 1;
21+
merged.push(a[ai++]);
2422
}
2523
}
2624
return merged;
@@ -46,7 +44,7 @@ function sort(array = []) {
4644
return array[0] > array[1] ? [array[1], array[0]] : array;
4745
}
4846
// slit and merge
49-
const mid = size / 2;
47+
const mid = parseInt(size / 2,10);
5048
return merge(sort(array.slice(0, mid)), sort(array.slice(mid)));
5149
}
5250
// end::sort[]
@@ -59,3 +57,4 @@ assert.deepStrictEqual(sort(), []);
5957

6058
assert.deepStrictEqual(merge([2, 5, 9], [1, 6, 7]), [1, 2, 5, 6, 7, 9]);
6159
assert.deepStrictEqual(merge(), []);
60+
assert.deepStrictEqual(merge([3, 5, 7], [2, 4]), [2, 3, 4, 5, 7]);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /