当前位置: 首页 > 编程笔记 >

详解三种C#实现数组反转方式

方航
2023-03-14
本文向大家介绍详解三种C#实现数组反转方式,包括了详解三种C#实现数组反转方式的使用技巧和注意事项,需要的朋友参考一下

今天上班中午吃饱之后、逛博客溜达看到一道题:数组反转  晚上回家洗完澡没事情做,就自己练习一把。

public static class ArrayReserve 
  { 
    /// <summary> 
    /// 使用 Array.Reverse(Arrar) 反转全部 
    /// </summary> 
    /// <param name="arr"></param> 
    public static void ReverseDemo1(int[] arr) 
    { 
      Console.WriteLine("使用 Array.Reverse(Arrar) 反转全部"); 
      Array.Reverse(arr); 
    } 
    /// <summary> 
    /// 使用 Array.Reverse(Array arr,int begin,int end),反转指定部分 
    /// </summary> 
    /// <param name="arr"></param> 
    /// <param name="begin"></param> 
    /// <param name="end"></param> 
    public static void ReverseDemo2(int[] arr, int begin, int end) 
    { 
      Console.WriteLine("使用 Array.Reverse(Array arr,int begin,int end),反转指定部分"); 
      Array.Reverse(arr, begin, end); 
    } 
    /// <summary> 
    /// 使用自定义方法实现反转 
    /// </summary> 
    /// <param name="arr"></param> 
    /// <param name="begin"></param> 
    /// <param name="end"></param> 
    public static void ReverseDemo3(int[] arr, int begin, int end) 
    { 
      Console.WriteLine("使用自定义方法实现反转"); 
      if(null==arr) 
      { 
        throw new ArgumentNullException("arr", "Array不能为null"); 
      } 
      if(begin<=0 || end <=0) 
      { 
        throw new ArgumentOutOfRangeException("开始或结束索引没有正确设置"); 
      } 
      if(end>arr.Length) 
      { 
        throw new ArgumentOutOfRangeException("end", "结束索引超出数组长度"); 
      } 
      while(begin<end) 
      { 
        int temp = arr[end]; 
        arr[end] = arr[begin]; 
        arr[begin] = temp; 
        begin++; 
        end--; 
      } 
    } 
  /// <summary> 
    /// 使用自定义方法实现反转(使用栈《后进先出》) 
    /// </summary> 
    /// <param name="arr"></param> 
    /// <param name="begin"></param> 
    /// <param name="end"></param> 
    public static void ReverseDemo4(int[] arr, int begin, int end) 
    { 
      Console.WriteLine("使用自定义方法实现反转(使用栈《后进先出》)"); 
      if (null == arr) 
      { 
        throw new ArgumentNullException("arr", "Array不能为null"); 
      } 
      if (begin <= 0 || end <= 0) 
      { 
        throw new ArgumentOutOfRangeException("开始或结束索引没有正确设置"); 
      } 
      if (end > arr.Length) 
      { 
        throw new ArgumentOutOfRangeException("end", "结束索引超出数组长度"); 
      } 
      Stack<int> intStack = new Stack<int>(); 
      int tempBegin = begin; 
      for(;begin<=end;begin++) 
      { 
        intStack.Push(arr[begin]); 
      } 
      for (; tempBegin <= end; tempBegin++) 
      { 
        arr[tempBegin] = intStack.Pop(); 
      } 
    } 
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍java数组的三种扩容方式以及程序实现详解,包括了java数组的三种扩容方式以及程序实现详解的使用技巧和注意事项,需要的朋友参考一下 因为数组是在内存中连续的一段存储空间,所以数组一旦被创建,空间就固定了,长度是不能扩增的。 数组的长度是固定的,如果需要扩充**,必须创建新数组,原数组的长度要复制到新数组中 。** java中,数组类型的变量传值的时候,事实上传递的是数组的地址 。

  • 本文向大家介绍PHP三种方式实现链式操作详解,包括了PHP三种方式实现链式操作详解的使用技巧和注意事项,需要的朋友参考一下 在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是: 如果要实现类似js中的链式操作,比如像下面这样应该怎么写? 下面分别用三种方式来实现: 方法一、使用魔法函数__call结合call_user_func来实现 思想:首先定义一个字符串类S

  • 本文向大家介绍Android 三种实现定时器详解及实现方法,包括了Android 三种实现定时器详解及实现方法的使用技巧和注意事项,需要的朋友参考一下 方法一:Handler+Thread 方法二:Handler类自带的postDelyed 方法三:Handler+Timer+TimerTask 以上就是对Android 定时器的资料整理后续继续补充相关知识,谢谢大家对本站的支持!

  • 本文向大家介绍PHP实现链式操作的三种方法详解,包括了PHP实现链式操作的三种方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现链式操作的三种方法。分享给大家供大家参考,具体如下: 在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是: 如果要实现类似js中的链式操作,比如像下面这样应该怎么写? 下面分别用三种方式来实现: 方法一、使用魔法函

  • 本文向大家介绍详细解读JAVA多线程实现的三种方式,包括了详细解读JAVA多线程实现的三种方式的使用技巧和注意事项,需要的朋友参考一下 最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结。 1、继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且

  • 本文向大家介绍Java实现数组反转翻转的方法实例,包括了Java实现数组反转翻转的方法实例的使用技巧和注意事项,需要的朋友参考一下 数组翻转的方法(java实现),数组翻转,就是将数组倒置,例如原数组为:{"a","b","c","d"},那么翻转后的数组为{"d","c","b","a"}。 【方法一】使用集合个工具类: Collections.reverse(ArrayList) 将数组进行反