Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对数组中的范围进行排序以进行计数而不是逻辑排序_C#_Arrays_Sorting - Fatal编程技术网

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

C# 对数组中的范围进行排序以进行计数而不是逻辑排序,c#,arrays,sorting,C#,Arrays,Sorting,给定一个包含10个成员(其中9个是整数)的数组,如何对索引范围为4到9的元素进行排序 例如: 输入:[输入向量,2,82084,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] 我们如何才能做到这一点 数组中的数据似乎被解释为字符串数据。这就解释了为什么8出现在列表的末尾,而不是

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

例如:

输入:
[输入向量,2,82084,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]


我们如何才能做到这一点

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

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

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

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


  • 这是什么语言?进行了有问题的编辑以表明语言是c#,framework 4.x。