|
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