示例#1
0
        public void Sort(AntiAliasingCell[] dataToSort, uint beg, uint end)
        {
            if (end == beg)
            {
                return;
            }
            else
            {
                uint pivot = GetPivotPoint(dataToSort, beg, end);
                if (pivot > beg)
                {
                    Sort(dataToSort, beg, pivot - 1);
                }

                if (pivot < end)
                {
                    Sort(dataToSort, pivot + 1, end);
                }
            }
        }
示例#2
0
        private uint GetPivotPoint(AntiAliasingCell[] dataToSort, uint begPoint, uint endPoint)
        {
            uint pivot = begPoint;
            uint m     = begPoint + 1;
            uint n     = endPoint;

            while ((m < endPoint) &&
                   dataToSort[pivot].x >= dataToSort[m].x)
            {
                m++;
            }

            while ((n > begPoint) && (dataToSort[pivot].x <= dataToSort[n].x))
            {
                n--;
            }
            while (m < n)
            {
                AntiAliasingCell temp = dataToSort[m];
                dataToSort[m] = dataToSort[n];
                dataToSort[n] = temp;

                while ((m < endPoint) && (dataToSort[pivot].x >= dataToSort[m].x))
                {
                    m++;
                }

                while ((n > begPoint) && (dataToSort[pivot].x <= dataToSort[n].x))
                {
                    n--;
                }
            }
            if (pivot != n)
            {
                AntiAliasingCell temp2 = dataToSort[n];
                dataToSort[n]     = dataToSort[pivot];
                dataToSort[pivot] = temp2;
            }
            return(n);
        }
示例#3
0
        private uint GetPivotPoint(AntiAliasingCell[] dataToSort, uint begPoint, uint endPoint)
        {
            uint pivot = begPoint;
            uint m = begPoint + 1;
            uint n = endPoint;
            while ((m < endPoint)
                && dataToSort[pivot].x >= dataToSort[m].x)
            {
                m++;
            }

            while ((n > begPoint) && (dataToSort[pivot].x <= dataToSort[n].x))
            {
                n--;
            }
            while (m < n)
            {
                AntiAliasingCell temp = dataToSort[m];
                dataToSort[m] = dataToSort[n];
                dataToSort[n] = temp;

                while ((m < endPoint) && (dataToSort[pivot].x >= dataToSort[m].x))
                {
                    m++;
                }

                while ((n > begPoint) && (dataToSort[pivot].x <= dataToSort[n].x))
                {
                    n--;
                }
            }
            if (pivot != n)
            {
                AntiAliasingCell temp2 = dataToSort[n];
                dataToSort[n] = dataToSort[pivot];
                dataToSort[pivot] = temp2;
            }
            return n;
        }
示例#4
0
 public void Sort(AntiAliasingCell[] dataToSort)
 {
     Sort(dataToSort, 0, (uint)(dataToSort.Length - 1));
 }