C#按降序对元素范围进行排序

C#按降序对元素范围进行排序,c#,sorting,C#,Sorting,我有[1,2,3,4,5]。如何按降序从3->5对元素进行排序?应为:[1,2,5,4,3]按向前顺序排序,然后调用最后几个元素。在数组上运行,直到得到大于2的对象。 用最后一个对象翻转该对象。 让我们看看您是否使用System.Linq计算出剩余的,您可以获取前两项,然后调用Reverse后将其与列表的其余部分合并: var items = new[] {1, 2, 3, 4, 5}; var sorted = items.Take(2).Concat(items.Skip(2).Rever

我有[1,2,3,4,5]。如何按降序从3->5对元素进行排序?应为:[1,2,5,4,3]

按向前顺序排序,然后调用最后几个元素。

在数组上运行,直到得到大于2的对象。
用最后一个对象翻转该对象。

让我们看看您是否使用
System.Linq
计算出剩余的,您可以
获取前两项,然后调用
Reverse
后将其与列表的其余部分合并:

var items = new[] {1, 2, 3, 4, 5};
var sorted = items.Take(2).Concat(items.Skip(2).Reverse());

更新:您可以采用此逻辑并创建更通用的实现,例如:

private static int[] SortRangeReverse(int[] input, int startRange, int endRange)
{
    // Argument validation - decide what you want to do if the args aren't what you expect
    if (input == null || input.Length < 2) return input;
    if (endRange <= startRange) return input;
    if (startRange < 0) startRange = 0;

    // The actual "meat" of the original answer in a more generic form:
    return
        input.Take(startRange)
            .Concat(input.Skip(startRange).Take(endRange + 1 - startRange).Reverse()
            .Concat(input.Skip(endRange + 1)))
            .ToArray();
}
private static int[]SortRangeReverse(int[]input,int startRange,int endRange)
{
//参数验证-如果参数不是您所期望的,则决定要执行的操作
if(input==null | | input.Length<2)返回输入;

如果(endRange在这里提交问题之前,你应该尝试将问题的标题粘贴到谷歌上。并且你应该始终发布与你的问题和/或问题相关的现有代码示例。这是一个非常糟糕/低级的问题,请编辑它并阅读如何在你有所有这些问题的时候提问可能?
列表.Take(2).OrderBy().Union(list.Skip(2).OrderByDescending())
你在问题中放了两次
C#
,但没有包含任何代码。如果你只是想硬编码一个答案,并写一个对任何其他输入值都不起作用的解决方案,为什么不直接写出
var sorted=new[]{1,2,5,4,3}
然后处理它。@Servy哦,那会更好!;)@Servy如果只使用OP提供的伪数据,就不可能想出其他东西,没有什么比我们能找到的固定2更好的了,或者你能提供一个更“动态”的方法?@RandRandom如果你没有足够的信息来回答这个问题(我同意,没有提供足够的信息来实际提供答案)然后不要发布问题的答案。如果你觉得问题没有提供足够的信息来回答,请投票以适当的理由结束。@Servy好吧,至少有人对这个答案感到满意,既然OP的简历上写着“微软的软件工程师”,我应该害怕吗