Java数组与排序详解:初始化、遍历、反转与二维数组应用
需积分: 10 83 浏览量
更新于2024-08-05
收藏 28KB MD 举报
"Java编程中的数组和排序方法的笔记"
在Java编程中,数组是一种非常基础且重要的数据结构,用于存储相同类型的数据集合。本笔记主要涵盖了数组的初始化、操作以及排序算法的基础知识。
### 数组
#### 初始化
数组在Java中必须先进行初始化才能使用。初始化分为动态初始化和静态初始化:
1. **动态初始化**:我们指定数组的长度,系统会自动将所有元素赋值为类型的默认值。例如,对于整型数组,系统会将所有元素赋值为0。
```java
int[] a = new int[10]; // 动态初始化,长度为10,元素默认为0
```
2. **静态初始化**:我们自己为数组元素提供初始值,系统会根据提供的值计算数组长度。
```java
int[] b = new int[]{1, 2, 3}; // 静态初始化,长度为3
int[] arr = {1, 2, 3, 4, 5}; // 另一种静态初始化方式
```
#### 遍历与操作
- **反向遍历**:可以通过从数组末尾开始向前遍历来实现反向遍历。
```java
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(arr[i]);
}
```
- **反转数组元素**:可以使用两个指针,一个指向数组开头,另一个指向结尾,交换它们指向的元素,然后逐步靠近中间,直到两者相遇。
```java
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
```
### 排序
数组排序是常见的操作,Java提供了多种排序算法,其中最常用的是`Arrays.sort()`方法,它使用了快速排序、插入排序和归并排序的混合版本,适用于各种数据规模。不过,在笔记中没有直接使用`Arrays.sort()`,而是展示了手动交换元素的反转数组操作。
### 二维数组
二维数组是数组的数组,常用于处理表格或矩阵数据。在案例中,我们模拟了公司年销售额的统计:
```java
int[][] arr = {{22, 66, 44}, {77, 33, 88}, {25, 45, 65}, {11, 66, 99}};
```
这个二维数组表示了四个季度每个月的销售额。通过双重循环可以方便地遍历和计算二维数组的元素,如求总销售额:
```java
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
}
System.out.println("总销售额为:" + sum); // 输出总销售额
```
在这个例子中,`sum`变量用于累加每个季度每个月的销售额,最后输出总销售额。
### 杨辉三角
未完成的笔记提到了打印杨辉三角的需求。杨辉三角是一种数字三角形,每个数是上一行相邻两个数的和,常用于求解组合问题。以下是一个简单的实现:
```java
public static void printPascalTriangle(int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(binomialCoefficient(i, j) + " ");
}
System.out.println();
}
}
private static int binomialCoefficient(int n, int k) {
if (k > n || k < 0) return 0;
if (k == 0 || k == n) return 1;
return binomialCoefficient(n - 1, k - 1) + binomialCoefficient(n - 1, k);
}
```
这里,`printPascalTriangle`函数接收行数作为参数,然后逐行打印杨辉三角;`binomialCoefficient`函数计算组合数C(n, k),即杨辉三角中的特定元素。
总结来说,这个笔记主要涉及了Java中数组的基本概念、初始化方式、遍历操作、二维数组的使用,以及如何进行简单的数组操作,如数组反转和求和,同时也暗示了对杨辉三角的计算。这些知识是Java初学者需要掌握的基础技能。
2011-10-14 上传
2022-03-03 上传
2023-06-11 上传
2023-04-29 上传
2023-07-25 上传
2023-08-25 上传
2024-06-06 上传
2024-06-15 上传
2023-07-30 上传
![](https://profile-avatar.csdnimg.cn/98ff0e1c5ac74fe996850f8ff021a44d_qq_46007589.jpg!1)
qq_46007589
- 粉丝: 0
- 资源: 6
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景