对数组内的范围进行排序以进行计数而不是逻辑

时间:2015-08-10 20:09:45

标签: c# arrays sorting

给定一个包含10个成员的数组,其中9个将是整数,如何对索引范围为4到9的元素进行排序?

例如:

输入:[Input vector,2,8,2084,33,49,42,8,21,37]

输出:[33,49,42,8,21,37]

Array.Sort(InputArray,4,6)生成[21,33,37,42,49,8],这是一种逻辑排序。但是,我们需要此范围按升序排列:[8,21,33,37,42,49]

我们怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

数组中的数据似乎被解释为字符串数据。这可以解释为什么8出现在列表的末尾,而不是在开头(因为字符串“8”确实出现在字符串“21”字典之后)。

要解决此问题,您可以执行以下任一操作:

  1. 将要排序的数组部分转换为某种数字类型的数组,例如int。这将涉及一些复制,可能不太理想。

  2. 实现一个实现IComparer的类,您可以在其中定义要使用的比较操作。基本上,您应该将两个字符串操作数转换为比较函数为数字,并根据数字比较返回适当的值。这可能就是你想要的。