对数字进行排序,得到c中的秩

本文关键字:得到 数字 排序 | 更新日期: 2023-09-27 18:27:02

如何在c#中对double[]数组进行排序并获得秩。例如,考虑分拣

[4 5 3 1 6] 

按降序排列。

我想将每个元素映射到排序列表中的索引。例如,如果我对列表进行排序,我会得到[6 5 4 3 2 1],所以6的索引是1,5的索引是2,依此类推

[3     2     4     5     1]

我搜索了很多,但没有找到

对数字进行排序,得到c中的秩

使用Linq:

    private static void Main(string[] args)
    {
         var ints = new[] { 4, 5, 3, 1, 6 };
         foreach (var item in ints.Select((x, i)=>new { OldIndex = i, Value = x, NewIndex = -1})
                                  .OrderByDescending(x=>x.Value)
                                  .Select((x, i) => new { OldIndex = x.OldIndex, Value = x.Value, NewIndex = i + 1})
                                  .OrderBy(x=>x.OldIndex))
             Console.Write(item.NewIndex + " ");
    }