From eafc8e98d29bd60db63ce1d3ffca5ff28bd8412f Mon Sep 17 00:00:00 2001 From: Philip YS Date: Mon, 23 May 2016 07:05:11 +0900 Subject: [PATCH 1/2] Fix define warning in "temp" variable --- algorithm/sorting/quick/basic/code.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/algorithm/sorting/quick/basic/code.js b/algorithm/sorting/quick/basic/code.js index 825d2a40..84419726 100644 --- a/algorithm/sorting/quick/basic/code.js +++ b/algorithm/sorting/quick/basic/code.js @@ -1,6 +1,7 @@ tracer._print('original array = [' + D.join(', ') + ']'); tracer._sleep(1000); tracer._pace(500); + function quicksort(low, high) { if (low < high) { var p = partition(low, high); @@ -8,25 +9,29 @@ function quicksort(low, high) { quicksort(p + 1, high); } } + function partition(low, high) { var pivot = D[high]; tracer._selectSet([low, high]); var i = low; + var temp; + for (var j = low; j < high; j++) { if (D[j] <= pivot) { - var temp = D[i]; + temp = D[i]; D[i] = D[j]; D[j] = temp; tracer._notify(i, j); i++; } } - var temp = D[i]; + temp = D[i]; D[i] = D[high]; D[high] = temp; tracer._notify(i, high); tracer._deselectSet([low, high]); return i; } + quicksort(0, D.length - 1); -tracer._print('sorted array = [' + D.join(', ') + ']'); \ No newline at end of file +tracer._print('sorted array = [' + D.join(', ') + ']'); From d8bc151c2dfdfacbf78d3fcb3ad37b8aafbe2438 Mon Sep 17 00:00:00 2001 From: Philip YS Date: Mon, 23 May 2016 07:07:36 +0900 Subject: [PATCH 2/2] make it look better --- algorithm/sorting/merge/basic/code.js | 92 ++++++++++++--------------- 1 file changed, 42 insertions(+), 50 deletions(-) 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