private void QuickSort(double[] d, int nStart, int nEnd)
{
if (nEnd - nStart < 1)
{
return;
}
double dTemp;
if (nEnd - nStart == 1)
{
if (d[nStart] > d[nEnd])
{
dTemp = d[nStart];
d[nStart] = d[nEnd];
d[nEnd] = dTemp;
}
return;
}
double dPivot = this.Median(d, nStart, nEnd);
int nLeft, nRight;
nLeft = nStart;
nRight = nEnd - 1;
while (nLeft < nRight)
{
while (d[++nLeft] < dPivot)
{
;
}
while (d[--nRight] > dPivot)
{
;
}
if (nLeft < nRight)
{
dTemp = d[nLeft];
d[nLeft] = d[nRight];
d[nRight] = dTemp;
}
}
d[nEnd - 1] = d[nLeft];
d[nLeft] = dPivot;
if (nRight > nStart)
{
this.QuickSort(d, nStart, nRight);
}
if (nLeft < nEnd)
{
this.QuickSort(d, nLeft, nEnd);
}
}