シェーカーソート

function shakerSort(array) {
  var l = 0, r = array.length - 1, last, i, temp;
  while(true) {
    last = -1;
    for(i=l; i<r; ++i) {
      if(array[i] > array[i+1]) {
        temp = array[i];
        array[i] = array[i+1];
        array[i+1] = temp;
        last = i;
      }
    }
    if(last == -1) return;
    r = last;
    
    last = -1;
    for(i=r; l<i; --i) {
      if(array[i-1] > array[i]) {
        temp = array[i-1];
        array[i-1] = array[i];
        array[i] = temp;
        last = i;
      }
    }
    if(last == -1) return;
    l = last;
  }
}