You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中仅将数组反转至指定位置?

如何仅将数组反转至给定位置(C#实现)

首先得明确下需求里的“反转至给定位置”是什么意思——通常我们指的是反转数组从起始位置到指定索引(0-based)的元素,该索引之后的元素保持原样。举个直观例子:原数组是[1,2,3,4,5],如果指定反转到索引2(也就是前3个元素),反转后的数组就变成[3,2,1,4,5]。

核心思路

实现这个需求最高效的方式是用双指针法,步骤非常清晰:

  • 定义两个指针:左指针从数组起始位置(索引0)出发,右指针从目标位置出发。
  • 交换两个指针指向的元素,然后左指针右移一位,右指针左移一位。
  • 重复交换操作,直到左指针位置大于等于右指针,停止操作。
  • 目标位置之后的元素完全不动,保留原有顺序。

C# 具体实现

下面是完整的代码示例,包含边界检查和测试用例:

using System;

public class ArrayManipulation
{
    /// <summary>
    /// 反转数组从起始索引到指定的0-based目标位置
    /// </summary>
    /// <param name="array">要操作的数组</param>
    /// <param name="targetPosition">目标位置(0-based),即反转到该索引为止</param>
    public static void ReverseUpToPosition(int[] array, int targetPosition)
    {
        // 先处理边界情况,避免无效操作
        if (array == null || array.Length <= 1 || targetPosition <= 0 || targetPosition >= array.Length)
        {
            return;
        }

        int left = 0;
        int right = targetPosition;

        // 双指针交换元素,原地修改数组
        while (left < right)
        {
            // 交换左右指针的元素
            int temp = array[left];
            array[left] = array[right];
            array[right] = temp;

            left++;
            right--;
        }
    }

    // 测试代码
    public static void Main()
    {
        int[] demoArray = { 10, 20, 30, 40, 50, 60 };
        int targetIndex = 3; // 0-based,反转前4个元素

        Console.WriteLine($"原数组:{string.Join(", ", demoArray)}");
        ReverseUpToPosition(demoArray, targetIndex);
        Console.WriteLine($"反转至索引{targetIndex}后的数组:{string.Join(", ", demoArray)}");
        // 输出结果:40, 30, 20, 10, 50, 60
    }
}

代码说明

  1. 边界检查:处理了数组为空、长度小于等于1(无需反转)、目标位置无效(比如小于等于0,或者超出数组最大索引)的情况,避免报错或无意义操作。
  2. 双指针法:时间复杂度是O(n)(n为目标位置的索引值),空间复杂度是O(1)——因为是原地修改数组,不需要额外存储空间,非常高效。
  3. 1-based 位置适配:如果你习惯用1-based的位置(比如要反转前3个元素就说位置3),只需要在调用方法时把目标位置减1即可,比如ReverseUpToPosition(demoArray, 3-1)。

扩展场景

如果你的需求是反转数组中任意区间(比如从索引a到索引b),只需要把左指针初始化为a,右指针初始化为b就行,逻辑和上面的代码完全一致。

内容的提问来源于stack exchange,提问作者Pankaj Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:41:33