Code coverage report for lib/algorithms/11-sorting/mergeSort.js

Statements: 100% (22 / 22)      Branches: 100% (6 / 6)      Functions: 100% (3 / 3)      Lines: 100% (22 / 22)      Ignored: none     

All files » lib/algorithms/11-sorting/ » mergeSort.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 401 1 60 28 28 28 28       1 28         28 96     28 64 20 20   44 44   64     28 28 28       1    
(function() {
	var mergeSort = function(arrayToSort, low, high) {
		if (low < high) {
			var middle = Math.floor((low + high) / 2);
			mergeSort(arrayToSort, low, middle);
			mergeSort(arrayToSort, middle + 1, high);
			merge(arrayToSort, low, middle, high);
		}
	};
 
	function merge(arrayToSort, low, middle, high) {
		var helper = [arrayToSort.length],
				helperLeft = low,
		 		helperRight = middle + 1,
				current = low;
 
		for(var i = low; i <= high; i++) {
			helper[i] = arrayToSort[i];
		}
 
		while(helperLeft <= middle && helperRight <= high) {
			if(helper[helperLeft] <= helper[helperRight]) {
				arrayToSort[current] = helper[helperLeft];
				helperLeft++;
			} else {
				arrayToSort[current] = helper[helperRight];
				helperRight++;
			}
			current++;
		}
 
		var remaining = middle - helperLeft;
		for(var j = 0; j <= remaining; j++) {
			arrayToSort[current + j] = helper[helperLeft + j];
		}
	}
 
	module.exports = mergeSort;
})();