我想对一个双精度数组进行排序,但是我想保存原始索引。我尝试了以下方法-
double[] circs = new double[noOfCircs];
使用值初始化马戏团...
int[] loc = Enumerable.Range(0, noOfCircs-1).ToArray();
Array.Sort(circs, loc);
排序后,我想使用数组loc进行进一步的计算。 我在做什么错了?
答案 0 :(得分:1)
我建议 Linq 借助匿名类:
using System.Linq;
...
double[] circs = ...
int[] loc = circs
.Select((value, index) => new { // for each item we store
value = value, // its value
index = index // and original index
})
.OrderBy(pair => pair.value) // Order by values
.Select(pair => pair.index) // By return original index
.ToArray();
答案 1 :(得分:-1)
您可以将双精度数组转换为列表,然后对列表进行排序。这样,您仍将拥有原始的双精度数组。
List<double> list = doubleArray.ToList();
list.Sort();