|
4 | 4 | */
|
5 | 5 | 'use strict';
|
6 | 6 |
|
| 7 | + var ll = require('../data-structures/linked-list.js'); |
| 8 | + |
7 | 9 | function compare(a, b) {
|
8 | 10 | return a - b;
|
9 | 11 | }
|
|
61 | 63 | * }, 0, 4, 7);
|
62 | 64 | */
|
63 | 65 | mergeSort.merge = function (array, cmp, start, middle, end) {
|
64 |
| - var left = []; |
65 |
| - var right = []; |
| 66 | + var left = new ll.LinkedList(); |
| 67 | + var right = new ll.LinkedList(); |
| 68 | + |
66 | 69 | var leftSize = middle - start;
|
67 | 70 | var rightSize = end - middle;
|
68 | 71 | var maxSize = Math.max(leftSize, rightSize);
|
|
71 | 74 |
|
72 | 75 | for (i = 0; i < maxSize; i += 1) {
|
73 | 76 | if (i < leftSize) {
|
74 |
| - left[i] = array[start + i]; |
| 77 | + left.push(array[start + i]); |
75 | 78 | }
|
76 | 79 | if (i < rightSize) {
|
77 |
| - right[i] = array[middle + i]; |
| 80 | + right.push(array[middle + i]); |
78 | 81 | }
|
79 | 82 | }
|
80 | 83 | i = 0;
|
81 | 84 | while (i < size) {
|
82 |
| - if (left.length && right.length) { |
83 |
| - if (cmp(left[0], right[0]) > 0) { |
84 |
| - array[start + i] = right.shift(); |
| 85 | + if (left.first && right.first) { |
| 86 | + if (cmp(left.first.data, right.first.data) > 0) { |
| 87 | + array[start + i] = right.shift().data; |
85 | 88 | } else {
|
86 |
| - array[start + i] = left.shift(); |
| 89 | + array[start + i] = left.shift().data; |
87 | 90 | }
|
88 |
| - } else if (left.length) { |
89 |
| - array[start + i] = left.shift(); |
| 91 | + } else if (left.first) { |
| 92 | + array[start + i] = left.shift().data; |
90 | 93 | } else {
|
91 |
| - array[start + i] = right.shift(); |
| 94 | + array[start + i] = right.shift().data; |
92 | 95 | }
|
93 | 96 | i += 1;
|
94 | 97 | }
|
|
0 commit comments