zoukankan      html  css  js  c++  java
  • 三种数组反转的实现方法备忘

       有幸拜读了老赵的 一道简单的编程题。在此自己练习一下,以作备忘:

       <对老赵其中提到的参数校验和异常捕获的介绍感触颇深,有句话叫:细节决定成败。>

       <阅读老赵几篇涉及到算法而且又是程序员基础的博文,让我感觉到我的基础真的是不牢固!>

     1  public static class ArrayReserve
     2     {
     3         /// <summary>
     4         /// 使用 Array.Reverse(Arrar) 反转全部
     5         /// </summary>
     6         /// <param name="arr"></param>
     7         public static void Reverse1(int[] arr)
     8         {
     9             Console.WriteLine("使用 Array.Reverse(Arrar) 反转全部");
    10             Array.Reverse(arr);
    11         }
    12        /// <summary>
    13         /// 使用 Array.Reverse(Array arr,int begin,int end),反转指定部分
    14        /// </summary>
    15        /// <param name="arr"></param>
    16        /// <param name="begin"></param>
    17        /// <param name="end"></param>
    18         public static void Reverse2(int[] arr, int begin, int end)
    19         {
    20             Console.WriteLine("使用 Array.Reverse(Array arr,int begin,int end),反转指定部分");
    21             Array.Reverse(arr, begin, end);
    22         }
    23         /// <summary>
    24         /// 使用自定义方法实现反转
    25         /// </summary>
    26         /// <param name="arr"></param>
    27         /// <param name="begin"></param>
    28         /// <param name="end"></param>
    29         public static void Reverse3(int[] arr, int begin, int end)
    30         {
    31             Console.WriteLine("使用自定义方法实现反转");
    32             if(null==arr)
    33             {
    34                 throw new ArgumentNullException("arr""Array不能为null");
    35             }
    36             if(begin<=0 || end <=0)
    37             {
    38                 throw new ArgumentOutOfRangeException("开始或结束索引没有正确设置");
    39             }
    40             if(end>arr.Length)
    41             {
    42                 throw new ArgumentOutOfRangeException("end""结束索引超出数组长度");
    43             }
    44             while(begin<end)
    45             {
    46                 int temp = arr[end];
    47                 arr[end] = arr[begin];
    48                 arr[begin] = temp;
    49                 begin++;
    50                 end--;
    51             }
    52         }
    53         /// <summary>
    54         /// 使用自定义方法实现反转(使用栈《后进先出》)
    55         /// </summary>
    56         /// <param name="arr"></param>
    57         /// <param name="begin"></param>
    58         /// <param name="end"></param>
    59         public static void Reverse4(int[] arr, int begin, int end)
    60         {
    61             Console.WriteLine("使用自定义方法实现反转(使用栈《后进先出》)");
    62             if (null == arr)
    63             {
    64                 throw new ArgumentNullException("arr""Array不能为null");
    65             }
    66             if (begin <= 0 || end <= 0)
    67             {
    68                 throw new ArgumentOutOfRangeException("开始或结束索引没有正确设置");
    69             }
    70             if (end > arr.Length)
    71             {
    72                 throw new ArgumentOutOfRangeException("end""结束索引超出数组长度");
    73             }
    74            Stack<int> intStack = new Stack<int>();
    75            int tempBegin = begin;
    76             for(;begin<=end;begin++)
    77             {
    78                 intStack.Push(arr[begin]);
    79             }
    80             for (; tempBegin <= end; tempBegin++)
    81             {
    82                 arr[tempBegin] = intStack.Pop();
    83             }
    84         }
    85     }
  • 相关阅读:
    WPF 登录窗口关闭时打开主窗口
    WPF Expander获得ToggleButton
    .NET Framework 4 与 .NET Framework 4 Client Profile
    WPF 根据枚举值名称 获得枚举值
    WPF KeyDown不响应方向键、Home/End/PgUp/PgDn等功能键
    C# MemoryStream和BinaryFormatter
    VB INET控件的全部用法
    C#写文件方法总结
    C#实现ADSL拨号(源代码例程)
    使用C#实现ADSL自动拨号(原理及封闭类)
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1508084.html
Copyright © 2011-2022 走看看