三种C#实现数组反转方式
2013-09-11 20:59
761 查看
今天上班中午吃饱之后、逛博客溜达看到一道题:数组反转 晚上回家洗完澡没事情做,就自己练习一把。
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(); } } }
相关文章推荐
- 详解三种C#实现数组反转方式
- java三种方式实现字符串反转(StringBuilder类,数组和栈)
- C# 三种实现抖屏的方式
- C#实现面向对象多态性的三种方式
- C#实现的三种方式实现模拟键盘按键
- c# list排序的三种实现方式
- c# 使用linq查询子句方式实现 字符串数组统计操作
- C#声明数组并初始化,有三种方式
- C#初始化数组的三种方式
- C语言实现比特位数组在目标空间左右居中对齐三种方式
- C#实现启用、禁用本地网络的三种方式
- 翻转数组 (三种实现方式)
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- c# list排序的三种实现方式
- C#实现的三种方式实现模拟键盘按键
- C# :自己动手实现:使用数组的方式实现List
- C#实现向多线程传参的三种方式实例分析
- C#初始化字符串数组的三种方式