internal void SortArray(int left, int right)
{
ArrayObject array = (ArrayObject)this.obj;
Object x, y;
if (right > left)
{
int piv = left + (int)((right - left) * MathObject.random());
x = array.denseArray[piv];
array.denseArray[piv] = array.denseArray[right];
array.denseArray[right] = x;
int i = left - 1, j = right;
while (true)
{
do
{
y = array.denseArray[++i];
}while(i < j && this.Compare(x, y) >= 0);
do
{
y = array.denseArray[--j];
}while(j > i && this.Compare(x, y) <= 0);
if (i >= j)
{
break;
}
QuickSort.Swap(array.denseArray, i, j);
}
QuickSort.Swap(array.denseArray, i, right);
this.SortArray(left, i - 1);
this.SortArray(i + 1, right);
}
}