【问题标题】:Order an array using another array as indexes C# [duplicate]使用另一个数组作为索引对数组进行排序C# [重复]
【发布时间】:2010-07-02 14:24:25
【问题描述】:

所以如果我有一个字符数组

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

还有另一个整数数组,说明排序顺序是什么:

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

我如何对 chars 数组中的数据进行排序,使用 sortOrder 数组中的值来确定顺序?在上面的例子中,排序后的数组看起来像

{'a','b','c','d','e','f'}

('d' 移到位置 4,'a' 移到位置 1,等等。重复 5 的地方,顺序无关紧要。)

我知道我可以通过创建第三个数组来做到这一点,但理想情况下我想使用 LinQ(.Sort)方法或类似方法来做到这一点,因为 sortOrder 数组中可能存在重复的值。

我想我想有效地对 sortOrder 数组进行排序(使用 sortOrder.Sort() 很容易),然后让它以完全相同的变化对 chars 数组进行排序,不知何故?

【问题讨论】:

  • 如果您添加示例输出会有所帮助。对于上面列出的数组,排序后的字符数组应该是什么样的?

标签: c# arrays sorting


【解决方案1】:

Array.Sort 的重载正是...

Array.Sort(sortOrder, chars);

(请注意,这实际上对 两个 数组进行了并行排序 - 即它对键进行排序,并对目标数组进行相同的交换)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多