diff --git a/algorithm/sorting/merge/basic/code.js b/algorithm/sorting/merge/basic/code.js index d3d0a175..84ee70f5 100644 --- a/algorithm/sorting/merge/basic/code.js +++ b/algorithm/sorting/merge/basic/code.js @@ -3,74 +3,66 @@ tracer._sleep(1000); tracer._pace(500); function mergeSort(start, end) { - if (Math.abs(end - start) <= 1) { - return []; - } - + if (Math.abs(end - start) <= 1) return []; var middle = Math.ceil((start + end) / 2); mergeSort(start, middle); mergeSort(middle, end); - - tracer._print('divide left[' + start + ', ' + (middle-1) + '], right[' + (middle) + ', ' + (end-1) + ']'); + tracer._print('divide left[' + start + ', ' + (middle - 1) + '], right[' + (middle) + ', ' + (end - 1) + ']'); return mergeSort.merge(start, middle, end); } -mergeSort.merge = function (start, middle, end) { - var left = Array(); - var right = Array(); - - var leftSize = middle - start; - var rightSize = end - middle; - var maxSize = Math.max(leftSize, rightSize); - var size = end - start; +mergeSort.merge = function(start, middle, end) { + const leftSize = middle - start; + const rightSize = end - middle; + const maxSize = Math.max(leftSize, rightSize); + const size = end - start; + var left = []; + var right = []; var i; for (i = 0; i < maxSize; i++) { - if (i < leftSize) { - left.push(D[start + i]); - tracer._select(start + i); - tracer._print('insert value into left array[' + i +'] = ' + D[start + i]); - } - if (i < rightSize) { - right.push(D[middle + i]); - tracer._select(middle + i); - tracer._print('insert value into right array[' + i +'] = ' + D[middle + i]); - } + if (i < leftSize) { + left.push(D[start + i]); + tracer._select(start + i); + tracer._print('insert value into left array[' + i + '] = ' + D[start + i]); + } + if (i < rightSize) { + right.push(D[middle + i]); + tracer._select(middle + i); + tracer._print('insert value into right array[' + i + '] = ' + D[middle + i]); + } } tracer._print('left array = [' + left.join(', ') + '],' + 'right array = [' + right.join(', ') + ']'); - + i = 0; while (i < size) { - if (left[0] && right[0]) { - if (left[0] > right[0]) { - D[start + i] = right.shift(); - tracer._print('rewrite from right array[' + i + '] = ' + D[start+i]); + if (left[0] && right[0]) { + if (left[0] > right[0]) { + D[start + i] = right.shift(); + tracer._print('rewrite from right array[' + i + '] = ' + D[start + i]); + } else { + D[start + i] = left.shift(); + tracer._print('rewrite from left array[' + i + '] = ' + D[start + i]); + } + } else if (left[0]) { + D[start + i] = left.shift(); + tracer._print('rewrite from left array[' + i + '] = ' + D[start + i]); } else { - D[start + i] = left.shift(); - tracer._print('rewrite from left array[' + i + '] = ' + D[start+i]); + D[start + i] = right.shift(); + tracer._print('rewrite from right array[' + i + '] = ' + D[start + i]); } - } else if (left[0]) { - D[start + i] = left.shift(); - tracer._print('rewrite from left array[' + i + '] = ' + D[start+i]); - } else { - D[start + i] = right.shift(); - tracer._print('rewrite from right array[' + i + '] = ' + D[start+i]); - } - - tracer._deselect(start + i); - tracer._notify(start + i); - - i++; - } - - tempArray = Array(); - for (i=start; i