Microsoft.JScript.QuickSort.SortObject C# (CSharp) Method

SortObject() private method

private SortObject ( long left, long right ) : void
left long
right long
return void
      internal void SortObject(long left, long right){ //left and right are longs to allow for values < 0. Their positives values are always < UInt32.MaxValue.
        Object x, y;
        if (right > left){
          long piv = left + (long)((right - left)*MathObject.random());
          LateBinding.SwapValues(this.obj, (uint)piv, (uint)right);
          x = LateBinding.GetValueAtIndex(this.obj, (ulong)right);
          long i = left - 1, j = right;
          while(true){
            do{
              y = LateBinding.GetValueAtIndex(this.obj, (ulong)++i);
            }while(i < j && this.Compare(x, y) >= 0);
            do{
              y = LateBinding.GetValueAtIndex(this.obj, (ulong)--j);
            }while(j > i && this.Compare(x, y) <= 0);
            if (i >= j)
              break;
            LateBinding.SwapValues(this.obj, (uint)i, (uint)j);
          }
          LateBinding.SwapValues(this.obj, (uint)i, (uint)right);
          this.SortObject(left, i-1);
          this.SortObject(i+1, right);
        }
      }
        

Usage Example

        internal virtual void Sort(ScriptFunction compareFn)
        {
            QuickSort qs     = new QuickSort(this, compareFn);
            uint      length = this.len;

            if (length <= this.denseArrayLength)
            {
                qs.SortArray(0, (int)length - 1);
            }
            else
            {
                qs.SortObject(0, length - 1);
            }
        }
All Usage Examples Of Microsoft.JScript.QuickSort::SortObject