我们如何排序阵列在c#
并获得排名。 例如考虑分类排序数字并获得在c#排名#
[4 5 3 1 6]
以降序排列。
我想映射每个元素到它的索引在排序列表中。例如,如果我对列表进行排序,我会得到[6 5 4 3 2 1],所以6的索引是1,5的索引是2,依此类推。所需的输出将是:
[3 2 4 5 1]
我搜索了很多,但没有发现任何
我们如何排序阵列在c#
并获得排名。 例如考虑分类排序数字并获得在c#排名#
[4 5 3 1 6]
以降序排列。
我想映射每个元素到它的索引在排序列表中。例如,如果我对列表进行排序,我会得到[6 5 4 3 2 1],所以6的索引是1,5的索引是2,依此类推。所需的输出将是:
[3 2 4 5 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 + " ");
}
1.请参阅LINQ的'。选择()'与指数的过载和创建包含数据和索引的匿名对象2.按数据排序3.选择索引 – zerkms 2014-10-18 09:19:31
我不明白。假设我已经定义了一个这样的数组: double [] sina = new double [5]; sina [0] = 5; sina [1] = 4; sina [2] = 7; sina [3] = 9; sina [4] = 1; 你的意思是使用sina.Select(3)?但是那给了错误 – Sina 2014-10-18 09:44:15