private void argQuickSortIndexes(VoidPtr ip, npy_intp m, VoidPtr sortData, npy_intp startingIndex, int DivSize, int IntpDivSize) { T[] data = sortData.datap as T[]; var argSortData = new CArgSortData[m]; var adjustedIndex = startingIndex + (sortData.data_offset >> DivSize); for (npy_intp i = 0; i < m; i++) { argSortData[i] = new CArgSortData(i, data[adjustedIndex++]); } //Array.Sort(argSortData); argSortData = argSortData.AsParallel().OrderBy(t => t).ToArray(); npy_intp[] _ip = (npy_intp[])ip.datap; npy_intp data_offset = ip.data_offset >> IntpDivSize; for (int i = 0; i < m; i++) { _ip[data_offset++] = argSortData[i].index - startingIndex; } }
public int CompareTo(object obj) { CArgSortData cv = obj as CArgSortData; return(this.dvalue.CompareTo(cv.dvalue)); }