c#数组排列系列1

题目

给定一个数组(或字符串),任务是反转数组/字符串。

Examples :
Input : arr[] = {4, 5, 1, 2}
Output : arr[] = {2, 1, 5, 4}


方法1

  1. 将开始和结束索引初始化为 start = 0, end = n-1
  2. 在循环中,将 arr[start] 与 arr[end] 交换并更改 start 和 end 如下:
    开始 = 开始 +1,结束 = 结束 - 1
using System;

class Arrangement1 {
 
    public static void rvereseArray(int []arr,
                    int start, int end)
    {
        int temp;
         
        while (start < end)
        {
            temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }    
     
    public static void printArray(int []arr,
                            int size)
    {
        for (int i = 0; i < size; i++)
            Console.Write(arr[i] + " ");
         
        Console.WriteLine();
    }
}

时间复杂度 : O(n)

方法2

  1. 将开始和结束索引初始化为 start = 0, end = n-1
  2. 将 arr[start] 与 arr[end] 交换
  3. 对数组的其余部分递归调用 reverse。
static void rvereseArray(int []arr, int start, int end)
{
    int temp;
    if (start >= end)
        return;
            
    temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
        
    rvereseArray(arr, start+1, end-1);
}

时间复杂度 : O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值