vamshisuram
1/5/2015 - 7:54 AM

// source http://jsbin.com/pogixi

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<script src="http://jashkenas.github.io/underscore/underscore-min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>

<script id="jsbin-javascript">
// merge sort
var i, arr = [], output = [], n=4;

for (i=0; i<n; i++) {
  arr.push(Math.floor(Math.random() * 100 + 1));
}

console.log('before', arr);

var iArr = angular.copy(arr);
console.log('copy', iArr);

function sort(inputArr) {
  var len = inputArr.length;
  if (len === 1) {
    return inputArr;
  }
  
  var a = sort(inputArr.splice(0, len/2));
  var b = sort(inputArr);
  
  var c = merge(a,b);
  return c;

}

function merge(a, b) {
  console.log('a,b', a, b);
  var l = a.length + b.length;
  var aLen = a.length, bLen = b.length;
  var i=0, j=0, k, mergedArr = [];
  for (k = 0; k < l; k++) {
    
//     if (i < aLen && j < bLen ) {
//       if(a[i] <= b[j]) {
//         mergedArr[k] = a[i];
//         i++;
//       } else {
//         mergedArr[k] = b[j];
//         j++;
//       }
//     } else if (i > aLen && j < bLen) {
//       mergedArr[k] = b[j];
//       j++;      
//     } else if (i < aLen && j > bLen) {
//       mergedArr[k] = a[i];
//       i++;      
//     } else {
//       //
//     }
    
    
    if(a[i] <= b[j]) {
      mergedArr[k] = a[i];
      i++;
    } else {
      mergedArr[k] = b[j];
      j++;
    }
  }
  
  return mergedArr;
}

var outputArr = sort(iArr);
console.log('outputArr', outputArr);
</script>

<script id="jsbin-source-html" type="text/html"><!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"><\/script>
<script src="//jashkenas.github.io/underscore/underscore-min.js"><\/script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>

</body>
</html></script>


<script id="jsbin-source-javascript" type="text/javascript">// merge sort
var i, arr = [], output = [], n=4;

for (i=0; i<n; i++) {
  arr.push(Math.floor(Math.random() * 100 + 1));
}

console.log('before', arr);

var iArr = angular.copy(arr);
console.log('copy', iArr);

function sort(inputArr) {
  var len = inputArr.length;
  if (len === 1) {
    return inputArr;
  }
  
  var a = sort(inputArr.splice(0, len/2));
  var b = sort(inputArr);
  
  var c = merge(a,b);
  return c;

}

function merge(a, b) {
  console.log('a,b', a, b);
  var l = a.length + b.length;
  var aLen = a.length, bLen = b.length;
  var i=0, j=0, k, mergedArr = [];
  for (k = 0; k < l; k++) {
    
//     if (i < aLen && j < bLen ) {
//       if(a[i] <= b[j]) {
//         mergedArr[k] = a[i];
//         i++;
//       } else {
//         mergedArr[k] = b[j];
//         j++;
//       }
//     } else if (i > aLen && j < bLen) {
//       mergedArr[k] = b[j];
//       j++;      
//     } else if (i < aLen && j > bLen) {
//       mergedArr[k] = a[i];
//       i++;      
//     } else {
//       //
//     }
    
    
    if(a[i] <= b[j]) {
      mergedArr[k] = a[i];
      i++;
    } else {
      mergedArr[k] = b[j];
      j++;
    }
  }
  
  return mergedArr;
}

var outputArr = sort(iArr);
console.log('outputArr', outputArr);
</script></body>
</html>
// merge sort
var i, arr = [], output = [], n=4;

for (i=0; i<n; i++) {
  arr.push(Math.floor(Math.random() * 100 + 1));
}

console.log('before', arr);

var iArr = angular.copy(arr);
console.log('copy', iArr);

function sort(inputArr) {
  var len = inputArr.length;
  if (len === 1) {
    return inputArr;
  }
  
  var a = sort(inputArr.splice(0, len/2));
  var b = sort(inputArr);
  
  var c = merge(a,b);
  return c;

}

function merge(a, b) {
  console.log('a,b', a, b);
  var l = a.length + b.length;
  var aLen = a.length, bLen = b.length;
  var i=0, j=0, k, mergedArr = [];
  for (k = 0; k < l; k++) {
    
//     if (i < aLen && j < bLen ) {
//       if(a[i] <= b[j]) {
//         mergedArr[k] = a[i];
//         i++;
//       } else {
//         mergedArr[k] = b[j];
//         j++;
//       }
//     } else if (i > aLen && j < bLen) {
//       mergedArr[k] = b[j];
//       j++;      
//     } else if (i < aLen && j > bLen) {
//       mergedArr[k] = a[i];
//       i++;      
//     } else {
//       //
//     }
    
    
    if(a[i] <= b[j]) {
      mergedArr[k] = a[i];
      i++;
    } else {
      mergedArr[k] = b[j];
      j++;
    }
  }
  
  return mergedArr;
}

var outputArr = sort(iArr);
console.log('outputArr', outputArr);