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