定义一个数组,数组成员十个,找出数组中最大数连同下标一起输出并利用冒泡排序对数组进行降序排序
时间: 2025-06-08 15:35:43 浏览: 28
### 使用 Java 实现冒泡排序并对数组进行降序排序,同时找出最大值及其下标
以下是一个完整的解决方案,其中包括定义一个包含十个成员的数组、使用冒泡排序对其进行降序排序以及找到数组中的最大值及其对应的下标。
```java
public class ArrayMaxAndBubbleSort {
// 方法:冒泡排序(降序)
public static void bubbleSortDescending(int[] arr) {
int n = arr.length;
boolean swapped; // 标志位,判断是否发生交换
for (int i = 0; i < n - 1; i++) { // 控制轮次
swapped = false;
for (int j = 0; j < n - i - 1; j++) { // 遍历未排序部分
if (arr[j] < arr[j + 1]) { // 若当前元素小于下一元素则交换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true; // 发生了交换
}
}
if (!swapped) { // 如果本轮没有发生交换,则提前退出
break;
}
}
}
// 方法:寻找数组的最大值及其下标
public static String findMaxValueAndIndex(int[] arr) {
if (arr == null || arr.length == 0) {
return "数组为空";
}
int maxVal = arr[0]; // 初始化最大值为第一个元素
int index = 0; // 初始化最大值索引为0
for (int i = 1; i < arr.length; i++) { // 遍历整个数组
if (arr[i] > maxVal) { // 更新最大值及索引
maxVal = arr[i];
index = i;
}
}
return "最大值:" + maxVal + ", 下标:" + index;
}
public static void main(String[] args) {
// 定义一个包含十个成员的数组
int[] array = {34, 78, 12, 56, 90, 23, 45, 67, 89, 10};
// 输出原始数组
System.out.println("原始数组:" + java.util.Arrays.toString(array));
// 寻找最大值及其下标
String result = findMaxValueAndIndex(array);
System.out.println(result); // 输出最大值及其下标
// 对数组进行冒泡排序(降序)
bubbleSortDescending(array);
// 输出排序后的数组
System.out.println("冒泡排序后的数组(降序):" + java.util.Arrays.toString(array));
}
}
```
---
#### 运行结果示例
假设初始数组为 `{34, 78, 12, 56, 90, 23, 45, 67, 89, 10}`,运行程序后输出如下:
```
原始数组:[34, 78, 12, 56, 90, 23, 45, 67, 89, 10]
最大值:90, 下标:4
冒泡排序后的数组(降序):[90, 89, 78, 67, 56, 45, 34, 23, 12, 10]
```
---
#### 解析
1. **冒泡排序逻辑**
冒泡排序的核心在于通过多轮比较和交换将较大的元素逐步移动到前面。对于降序排序,只需改变比较条件为 `if (arr[j] < arr[j + 1])` 即可[^1]^。
2. **寻找最大值及其下标**
遍历数组的同时记录当前遇到的最大值及其对应的位置。这种方法的时间复杂度为 O(n)[^2]^。
3. **时间复杂度分析**
- 冒泡排序的时间复杂度为 O(n²),其中 n 是数组长度。
- 查找最大值的操作仅需单次遍历数组,因此其时间复杂度为 O(n)。
---
#### 注意事项
- 如果数组可能为空或为 `null`,应在操作前加入相应的校验逻辑以防止异常。
- 冒泡排序虽然易于理解,但在实际应用中通常不推荐用于大规模数据处理,因为存在更高效的排序算法如快速排序或归并排序[^3]^。
---
阅读全文
相关推荐


















