数组逆序
来源:互联网 发布:python 函数定义输出 编辑:程序博客网 时间:2024/05/18 22:55
**一、算法思想**
交换数组中第一个数与最后一个数,第二个数与倒数第二个数,直至开始索引和末尾索引指向相同位置。
如图所示:
**二、初步算法代码(少量偶然数据)**
注:随便的定义一个长度为5的数组,逆序之后结果是正确的。
代码:
class NiXv{public static void main(String[] args){int[] a={3,4,5,6,9};System.out.println("初始数组:");print(a);reverse(a);System.out.println("逆序数组:");print(a);}public static void reverse(int[] a){for(int i=0;i<a.length/2;i++){int start=i;int end=a.length-1-i;if(start==end){break;}int temp=a[start];a[start]=a[end];a[end]=temp;}}public static void print(int[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();}}
**三、另一个代码,开辟了偶数长度内存int[] a=new int[20]**
注:还是以上的代码,只修改了内存大小,开辟空间不同,int[] a=new int[20],执行程序会发现数组逆序没有实现,逆序前后的数值是相同的。
原因:开辟的数组的长度为偶数,逆序的时候折半查找,写的是i<a.length,这样的话, 当程序走到折半中间的时候,不能满足条件if(start==end),那么就会继续走剩下的后面的部分,结果就会是逆序又逆序,还是最初的数组。
所以:算法原理是折半查找,交换,那么条件直接写为i<a.length/2即可。
**四、完善代码如下 **
class Reverse{ public static void main(String[] args){ int[] a=new int[11]; fuZhi(a); System.out.println("初始数组:"); print(a); reverse(a); System.out.println("逆序数组:"); print(a); } public static void fuZhi(int[] a){ for(int i=0;i<a.length/2;i++){ a[i]=(int)(Math.random()*20); } } public static void reverse(int[] a){ for(int i=0;i<a.length/2;i++){ int start=i; int end=a.length-1-i; if(start==end){ break; } int temp=a[start]; a[start]=a[end]; a[end]=temp; } } public static void print(int[] a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println(); }}
阅读全文
0 0
- 数组逆序
- 数组逆序
- 数组逆序
- 数组逆序
- 数组逆序
- 数组逆序
- 逆序数组
- 数组逆序
- 数组逆序
- 数组逆序
- 数组逆序
- 数组之数组逆序
- 数组逆序输出(递归)
- 递归 数组逆序
- 递归逆序数组元素
- 数组中的逆序对
- 数组逆序输出
- 逆序输出数组元素
- 泛型
- 学习OpenGL系列一 窗口
- Chrome浏览器Cookie解密
- 如何在bat文件中设置JAVA临时环境变量
- Android跳转到应用宝指定关键字搜索界面
- 数组逆序
- ROS下的CMakeList.txt编写
- ggplot2 specific command
- kjvba
- 使用redux-thunk实现异步操作的中止
- ASP.NET开发实例大全提高篇-1、目录
- Android-基于无人机-禁飞区/限飞区【地图】的开发
- 生信宝典,生物信息学习资源
- Codeforces 296D Greg And Graph (逆向处理)Floyd