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); } } }
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); }
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; }
public void Sort(AntiAliasingCell[] dataToSort) { Sort(dataToSort, 0, (uint)(dataToSort.Length - 1)); }