每日一题——逆序数组元素

139 阅读2分钟

「这是我参与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的数组部分内容,数据结构和算法留待以后在仔细学习。