Day 3:数组定义与操作(Java 蓝桥杯 B 组)
一、Java 数组基础
数组(Array)是 Java 中存储相同类型数据的结构。蓝桥杯比赛中,数组经常用于存储数据、查找最大/最小值、排序、矩阵运算等场景。
二、一维数组
1. 数组的定义
Java 中定义数组的方式:
数组是一种用于存储相同数据类型元素的有序集合。在 Java 中,数组一旦创建,其长度就固定了。
// 方法1:直接声明数组(默认值是0或null)
int[] arr = new int[5];
// 方法2:声明并初始化数组
int[] arr2 = {1, 2, 3, 4, 5};
// 方法3:创建对象方式
int arr3[] = new int[]{10, 20, 30, 40, 50};
2. 数组的访问
数组的索引从 0 开始,到 length - 1 结束:
int[] arr = {5, 10, 15, 20};
System.out.println(arr[0]); // 输出 5
System.out.println(arr[arr.length - 1]); // 输出 20
注意:访问越界会报错
System.out.println(arr[4]); // ArrayIndexOutOfBoundsException
3. 数组的遍历
(1)for 循环遍历
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
(2)增强型 for-each
for (int num : arr) {
System.out.print(num + " ");
}
优点:简洁、自动遍历
缺点:无法修改数组中的值
4. 练习 1:数组逆序输出
题目描述
输入一个整数数组,按相反顺序输出。
输入示例
5
1 2 3 4 5
输出示例
5 4 3 2 1
解析:通过从数组的最后一个元素开始,依次向前遍历数组元素并输出,实现数组的逆序输出。
Java 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// 逆序输出
for (int i = n - 1; i >= 0; i--) {
System.out.print(arr[i] + " ");
}
}
}
解析
- 倒序遍历数组 for (int i = n-1; i >= 0; i--)
- 时间复杂度 O(n),仅遍历一次数组
5. 练习 2:求数组最大值
题目描述
输入一个整数数组,找出其中的最大值。
输入示例
5
3 9 6 2 8
输出示例
9
解析:首先假设数组的第一个元素为最大值,然后遍历数组,将当前元素与最大值比较,如果当前元素更大,则更新最大值。
Java 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// 计算最大值
int maxVal = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
System.out.println(maxVal);
}
}
解析
- 初始化