Java数组与排序详解:初始化、遍历、反转与二维数组应用

需积分: 10 0 下载量 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初学者需要掌握的基础技能。