详解三种C#实现数组反转方式
作者:11111111221f 发布时间:2023-10-09 20:29:23
标签: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();
}
}
}
来源:http://blog.csdn.net/guobin_lu/article/details/11580449


猜你喜欢
- session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获
- AspectJ简介它不属于spring;AspectJ是一个AOP的框架;定义了AOP语法;有一个专门的编译器用来生成遵守Java字节编码规
- using System;using System.Collections.Generic;using System.ComponentMo
- Map 中ConcurrentHashMap是线程安全的,但不是所有操作都是,例如get()之后再put()就不是了,这时使用merge()
- 前言 需要实现环(圆)形菜单。效果预览(更多效果请下载源码体验):实现代码1.CircularMenuItemCustomCont
- 本程序通过JFrame实时显示本机摄像头图像,并将图像存储到一个缓冲区,当用户用鼠标点击JFrame中任何区域时,显示抓取图像的简单动画,同
- 最近项目中遇到了华为虚拟按键适配的问题,主页是个RecylerView(如下图),如果不做适配,在界面初始化完毕后,虚拟按键会遮挡页面或者空
- 前言周六在公司写Reactor模型,一女同事问我为啥都2023年了还在学习Reactor模型呀,我问她为啥快30的年纪了,周六还在公司看我写
- 阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题: 1、 给定一个整数N,那么N的阶乘N!
- 对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibern
- 前言现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。最近做项目的时候,老大让我把之前做的we
- 介绍在进行项目开发的时候,刚好需要用到对字符串表达式进行求值的处理场景,因此寻找了几个符合要求的第三方组件LambdaParser、Dyna
- 部分同学在使用 idea 时可能会遇到输入 sout 无法出现自动补全 System.out.println();的情况,其实 idea 默
- 基本哪些属于引用类型类(object,string),接口、数组、委托引用类型分配在哪里引用类型变量位于线程栈。引用类型实例分配在托管堆上。
- 一、进程内部的线程同步1、使用lock,用法如下:private static readonly object SeqLock = new
- 开篇:我们将前面的springboot整合H2内存数据库,实现单元测试与数据库无关性提供的Restful服务注册到spring cloud的
- 本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本。当时安装会因为
- 前言介绍最近很多同学找我帮忙做一些课程设计或Web前端大作业、其中控制台项目应该是初学者必须经历的一个过程、作为java初学者这个控制台版本
- 1.固定大小的线程池简介线程池就是在程序启动的时候先建立几个可以使用的线程放在那里,然后等着具体的任务放进去,这个任务基本可以说都是Runn
- 前言最近在学习C# Socket相关的知识,学习之余,动手做了一个简单的局域网聊天器。有萌生做这个的想法,主要是由于之前家里两台电脑之间想要