对双精度数组进行排序并返回原始索引的排序数组

时间:2018-11-26 10:31:40

标签: c# asp.net .net sorting quicksort

我想对一个双精度数组进行排序,但是我想保存原始索引。我尝试了以下方法-

double[] circs = new double[noOfCircs];

使用值初始化马戏团...

int[] loc = Enumerable.Range(0, noOfCircs-1).ToArray();
Array.Sort(circs, loc);

排序后,我想使用数组loc进行进一步的计算。 我在做什么错了?

2 个答案:

答案 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();