You are reading a single comment by @TiCPU and its replies. Click here to read the full conversation.
  • I tried optimizing the function, removing functions call seem to help quite a bit, and prevent stack overflows just a bit since it is easy to get one.

    qsort: 165526.5649749999865889 (0.398799999995389953255)

    swap and qsort_partition not needed anymore:

    // Quick sort
    Array.prototype.qsort = function (left, right) {
      var pivot, newPivot, pivotVal, tmp;
    
      if (left === undefined) {
        left = 0;
        right = this.length - 1;
      }
    
      if (left < right) {
        pivot = left + Math.ceil((right - left) / 2);
    
        // Partition
        pivotVal = this[pivot];
        newPivot = left;
        this[pivot] = this[right]; this[right] = pivotVal;
        for (var i = left; i < right; i++) {
          if (this[i] < pivotVal) {
            tmp = this[i]; this[newPivot++] = i; this[i] = tmp;
          }
        }
    
        this.qsort(left, newPivot - 1);
        this.qsort(newPivot + 1, right);
      }
    };
    Uint16Array.prototype.qsort = Array.prototype.qsort;
    
About

Avatar for TiCPU @TiCPU started