「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
大家好,我是洋哥。今天给大家带来的是每日一题——逆序数组元素。
题目要求
我们已经学过了一维数组,接下来一起做一些练习巩固一下吧。下面有一个一维数组a[],请你运用刚学的编程知识将数组元素顺序颠倒。
建议用时:15-20分钟
难度:中等
知识点分析
这道题主要考察的是Java的数组部分知识。附带一部分程序流程控制的知识点——for循环。
问题分析
第一,这道题并不复杂,是一道简单的逆序题目。首先我们需要一个原数组,为了保证可靠性,可以选择用随机数来构成一个原数组。
第二,我们先弄一个输出是为了将原始数组的值与逆序后的值进行对比,验证可行性。
第三,用for循环实现逆序。定义一个零时变量,用for循环将数组里的前面的值赋给临时变量,将后面的值赋给前面,将临时变量赋给后面,实现调换实现逆序。
相关知识点复习
不管是一维数组还是二维数组,我们只需要掌握6个知识要点就足够了。
分别是以下6个知识要点:
1.一维数组的声明和初始化
2.如何调用数组的指定位置的元素
3.如何获取数组的长度
4.如何遍历数组
5.数组元素的默认初识化值
6.数组的内存解析
逆序算法
第一个,如本题所示直接逆序。
第二个,利用数据结构中的栈来实现逆序,因为栈有先进后出的特性。
第三个,利用递归来实现逆序比如说翻转二叉树等,具体后面会讲述。
第四个,利用迭代来实现逆序,可以借助指针来实现逆序。
代码实现
public static void main(String[] args) {
int[] a = new int[] { (int) (Math.random() * 1000),
(int) (Math.random() * 1000), (int) (Math.random() * 1000),
(int) (Math.random() * 1000), (int) (Math.random() * 1000) };
System.out.println(a);
System.out.println(Arrays.toString(a));
swap(a);
System.out.println(Arrays.toString(a));
}
public static void swap(int a[]) {
int len = a.length;
for (int i = 0; i < len / 2; i++) {
int tmp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = tmp;
}
}
总结和建议
逆序算法是数据结构和算法中比较基础地部分,但是也有难题。我们目前主要学习好Java的数组部分内容,数据结构和算法留待以后在仔细学习。