SuperMap.WindowsPhone.Core.GeoRegion.QuickSort C# (CSharp) Method

QuickSort() private method

private QuickSort ( double d, int nStart, int nEnd ) : void
d double
nStart int
nEnd int
return void
        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);
            }
        }