java二维数组全部数据冒泡排序
时间: 2025-06-05 15:42:59 浏览: 12
### Java中实现二维数组所有元素的冒泡排序
要对Java中的二维数组的所有元素进行冒泡排序,可以通过以下方法完成:
#### 方法概述
首先需要将二维数组展平为一维数组,这样可以方便地应用经典的冒泡排序算法。之后再将排序后的结果重新填充回原始的二维数组结构。
以下是完整的代码实现以及解释:
```java
public class BubbleSort2D {
public static void main(String[] args) {
int[][] array = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}}; // 初始化二维数组
bubbleSort(array); // 调用冒泡排序函数
// 输出排序后的二维数组
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
public static void bubbleSort(int[][] array) {
int totalElements = getTotalElements(array);
int[] flattenedArray = new int[totalElements];
// 将二维数组展平为一维数组
flattenArray(array, flattenedArray);
// 对一维数组执行冒泡排序
for (int i = 0; i < flattenedArray.length - 1; i++) {
for (int j = 0; j < flattenedArray.length - i - 1; j++) {
if (flattenedArray[j] > flattenedArray[j + 1]) {
swap(flattenedArray, j, j + 1);
}
}
}
// 将排序后的一维数组重新填入二维数组
refillArray(array, flattenedArray);
}
private static int getTotalElements(int[][] array) {
int count = 0;
for (int i = 0; i < array.length; i++) {
count += array[i].length;
}
return count;
}
private static void flattenArray(int[][] array, int[] result) {
int index = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
result[index++] = array[i][j];
}
}
}
private static void refillArray(int[][] array, int[] sortedArray) {
int index = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = sortedArray[index++];
}
}
}
private static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
```
#### 关键点解析
1. **计算总元素数量**
使用`getTotalElements()`方法统计二维数组中所有的元素总数[^1]。
2. **展平二维数组**
`flattenArray()`方法用于将二维数组转换成一维数组以便于后续处理[^3]。
3. **经典冒泡排序逻辑**
应用了标准的双层循环冒泡排序逻辑,在每次迭代中比较相邻两个数并交换位置。
4. **重构二维数组**
排序完成后,通过`refillArray()`方法将已排序的一维数组重新映射至原二维数组结构。
此方案不仅实现了对整个二维数组内所有数值的有效排序,还保持了原有数据布局不变。
---
阅读全文
相关推荐















