DataTables

DataTables Examples

JavaScript

(function() {

  Array.prototype.msort = msort;

  function msort(compare) {

    var length = this.length,
        middle = Math.floor(length / 2);

    if (!compare) {
      compare = function(left, right) {
        if (left < right) 
          return -1;
        if (left == right)
          return 0;
        else
          return 1;
      };
    }

    if (length < 2)
      return this;

    return merge(
      this.slice(0, middle).msort(compare),
      this.slice(middle, length).msort(compare),
      compare
    );
  }

  function merge(left, right, compare) {

    var result = [];

    while (left.length > 0 || right.length > 0) {
      if (left.length > 0 && right.length > 0) {
        if (compare(left[0], right[0]) <= 0) {
          result.push(left[0]);
          left = left.slice(1);
        }
        else {
          result.push(right[0]);
          right = right.slice(1);
        }
      }
      else if (left.length > 0) {
        result.push(left[0]);
        left = left.slice(1);
      }
      else if (right.length > 0) {
        result.push(right[0]);
        right = right.slice(1);
      }
    }
    return result;
  }
})();

String.prototype.shuffle = function () {
    var a = this.split(""),
        n = a.length;

    for(var i = n - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
    return a.join("");
}

var int = [];
for (var i=0;i<50000;i++) {
	int.push(Math.floor(Math.random()*1000));
}

var str = [];
for (var i=0;i<50000;i++) {
	str.push("abcdefghijklmnopqrstuvxyz".shuffle());
}

console.time('int array.msort');
int.msort();
console.timeEnd('int array.msort');

console.time('int array.sort');
int.sort();
console.timeEnd('int array.sort');

console.time('int array.msort');
str.msort();
console.timeEnd('int array.msort');

console.time('int array.sort');
str.sort();
console.timeEnd('int array.sort');