Merge Sort Simple

by rishul matta

JavaScript

var MergeSort = (function() {
    function sort(arr) {
        var left, right, length, low, mid, high;

        if (arr.length == 1) {
			return arr;
        }

        high = arr.length;
        mid = Math.floor(high/2);
        low = 0
        left = arr.slice(low, mid);
        right = arr.slice(mid, high);
        
        return mergeArr(sort(left), sort(right));
    }
    
    function mergeArr(left, right) {
    debugger;
        var result = [];
        while(left.length || right.length) {
            if (left.length && right.length) {
               right[0] > left[0] ? result.push(left.shift()): result.push(right.shift())
                    
              
            } else 
                if (left.length) {
                    result = result.concat(left);
					left = [];
                } else {
                    result = result.concat(right);
					right = [];
                }
        }
        
        return result;
    }
    
    return sort;
})()

MergeSort([4,2,6,8,1,3,5])