【发布时间】:2019-04-27 23:38:33
【问题描述】:
我想对一个双精度数组进行排序,但我想保存原始索引。我已经尝试了以下 -
double[] circs = new double[noOfCircs];
用值初始化 circs...
int[] loc = Enumerable.Range(0, noOfCircs-1).ToArray();
Array.Sort(circs, loc);
排序后,我想使用数组 loc 进行进一步的计算。 我做错了什么?
【问题讨论】:
-
排序数组是数组中值位置的变化,这意味着索引会改变。要保存以前的位置,您将需要不同的集合来存储值和原始索引。
-
我正在使用不同的数组来存储索引。上面共享代码中的数组'loc'用于存储索引值。
-
仅供我理解。你有
double[]和你想要排序的值。但是您不想更改原始数组,因此您试图以排序方式将原始数组的索引保存到int[]?您是否尝试过创建原始数组的已排序double[]数组副本,遍历新数组,找到旧数组中的值并将其索引保存到 loc 数组? -
var result = circs.Select((s,i) => new { Value = s, Index = i }).OrderBy(o => o.Value);这将返回匿名对象的有序集合 (IOrderedEnumerable),您可以根据需要使用它。这就是你想要的吗? -
你想达到什么目的?
Sort method would be faster than iterating through the lot of them你这是什么意思?请编辑您的问题,添加详细信息您想做什么、您做了什么、出了什么问题以及预期的结果是什么。
标签: c# asp.net .net sorting quicksort