使用另一个数组作为索引对数组进行排序 C#

4

如果我有一个字符数组

char[] chars = new char[]{'f','a','d','e','c','b'};

还有另一个整数数组,表示排序顺序:

int[] sortOrder = new int[]{5,1,4,5,3,2};

我该如何使用sortOrder数组中的值来确定顺序,对字符数组中的数据进行排序?在上面的示例中,排序后的数组应该是这样的:
{'a','b','c','d','e','f'}

(“d”移动到位置4,“a”移动到位置1等等。重复出现的数字5,顺序无关紧要。)
我知道可以通过创建第三个数组来完成,但理想情况下,我希望使用LinQ(.Sort)方法或类似方法来完成,因为sortOrder数组中可能存在重复的值。
我想要对sortOrder数组进行排序(可以使用sortOrder.Sort()轻松实现),然后以某种方式获取chars数组相同的变化并进行排序。

如果您添加示例输出,将会更有帮助。对于您上面列出的数组,字符排序后的数组应该是什么样子? - Chris Shouts
1个回答

11

有一种重载的Array.Sort方法可以确切地做到这一点...

Array.Sort(sortOrder, chars);

(请注意,这实际上并行地排序了两个数组 - 也就是说,它对键进行排序,并将相同的交换应用于目标数组)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接