�ʤ�ۤɡ�Schwartzian Transform�ΰճ�������ˡ���ʤ���

snippets from shinichitomita��s journal - JavaScript�������sort�ؿ��ǥ���åե뤹��
Array.prototype.shuffle = function() {
   return this.map(function(a){ return { weight: Math.random(), value: a } })
              .sort(function(a, b){ return a.weight - b.weight })
              .map(function(a){ return a.value });
}

�Ǥ⡢�����ǤϤɤ���������Ĵ�٤Ƥߤ���

�����Ǥϡ����ǿ�10000�򥷥�åե뤹����֤��¬���Ƥ��롣

Fisher-Yates

�ޤ��ϡ�Fisher-Yatesˡ�������ɤ���®���󥿡��ե���������� :: ����JavaScript������򥷥�åե뤹����ˡ��ե���������ۤܤ��Τޤޡ�

MacBook Pro���Safari�Ǥ�Firefox 1.5�Ǥ⡢0.1�äȤ�����ʤ���

Array.prototype.shuffle_fy = function() {
    var i = this.length;
    while(i){
        var j = Math.floor(Math.random()*i);
        var t = this[--i];
        this[i] = this[j];
        this[j] = t;
    }
    return this;
}
Start seconds.

Schwartzian Transform (Original)

���ˡ�snippets from shinichitomita��s journal - JavaScript�������sort�ؿ��ǥ���åե뤹�����Τޤޡ������Schwartzian Transform�Ǥ�Ϣ������ǤϤʤ������Ȥ��Τ����ɡ�������������狼��䤹���Ȥ����Ф狼��䤹����

Safari�Ǥ�2�ü�ۤɤ����ä���

Array.prototype.shuffle_sto = function() {
   return this.map(function(a){ return { weight: Math.random(), value: a } })
              .sort(function(a, b){ return a.weight - b.weight })
              .map(function(a){ return a.value });
}

�ʤ���Array.map��Safari�ˤ��������Ƥ��ʤ��ä��Τǡ��ʲ��Τ褦�ˤ��Ƥ��롣

if (! Array.prototype.map ){
  Array.prototype.map = function(f){
    var a = [];
    for(var i = 0; i < this.length; i++){
      a[i] = f(this[i]);
    }
    return a;
  }
}
Start seconds.

Schwartzian Transform (via Array)

�����Ƥ����餬��ľ��Schwartzian Transform��

Safari�Ǥ��ܶᤤ®�٤��Ф�Τ����ɡ�Firefox�ǤϹ�®���ϸ������ϰϤ��ä���������ˤ���1�ðʾ夫���롣

Array.prototype.shuffle_sta = function() {
   return this.map(function(a){ return [a, Math.random()] })
              .sort(function(a, b){ return a[1] - b[1] })
              .map(function(a){ return a[0] });
}
Start seconds.

����

���Τ褦�ˡ�Schwartzian Transform�ϡ������ɤ��狼��䤹����ΤΡ�20�ܤˤ����®�ٺ������롣�ѻ��˻Ȥ��ΤǤ�����򤱤�٤����⤷��ʤ���

Dan the Array Shuffler