如何根据数组Y中相应值的大小重新排列数组X.
这就是我在伪代码中的意思:
Array X = Red, Yellow, Green, Blue
Array Y = 68.4, 42.3, 53.6, 69.3 (random positive doubles)
我想输出:
Array Z = Blue, Red, Green, Yellow
即。它按大小对数组Y的元素进行排名(因此它变为69.4,68.3,53.6,42.3),然后将相同的重新排序应用于数组X的元素,重新排序为蓝色,红色,绿色,黄
到目前为止,我的尝试是创建一个添加元素的列表,使用list.sort方法对它们进行重新排序,但说实话它完全是一团糟,因为我无法理解所需的逻辑。
编辑 - 使用双打而不是整数
答案 0 :(得分:4)
Array.Sort
特别重载。
只需使用:
Array.Sort(Y, X);
话虽如此,虽然您可以这样做,但我强烈建议您创建一个具有Color
和int
值的复合项的单个数组,然后对其进行排序在int上,而不是有两个不同的数组,其中每个数组的索引对应于“某事”的一个组件。它将使处理更容易。
答案 1 :(得分:1)
List<string> colors = new List<string>() { "Red", "Yellow", "Green", "Blue" };
List<double> order = new List<double>() { 68.4, 42.3, 53.6, 69.3 };
var newList = order.Select((item, inx) => new { item, inx })
.OrderByDescending(x => x.item)
.Select(x => colors[x.inx])
.ToList();
答案 2 :(得分:0)
这可能会有所帮助:
List<Tuple<string, int>> values = new List<Tuple<string, int>>();
values.Add(new Tuple<string, int>("Red", 68));
values.Add(new Tuple<string, int>("Yellow", 42));
values.Add(new Tuple<string, int>("Green", 53));
var sortedValues = values.OrderByDescending(i => i.Item2).ToList();
答案 3 :(得分:0)
使用键值对列表可以获得更好的结果,然后您可以简单地按值排序并输出数组或键列表。
您正在寻找的文章中的Compare2方法:http://www.dotnetperls.com/sort-keyvaluepair