我们如何在double[]
中对c#
数组进行排序并获得排名。
例如,考虑排序
[4 5 3 1 6]
按降序排列。
我想将每个元素映射到排序列表中的索引。例如,如果我对列表进行排序,我会得到[6 5 4 3 2 1],所以6的索引是1,5的索引是2,依此类推。所需的输出是:
[3 2 4 5 1]
我搜索了很多但没有找到任何东西
答案 0 :(得分:1)
使用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 + " ");
}