一、从键盘输入6个整数,存入数组a[6]中。要求 1、找出6个数中的最大值和最小值。 2、逆序输出。 3、使用冒泡排序法选择排序从6个数实现从大到小排序,并输出
时间: 2024-11-15 20:34:23 浏览: 128
面试之大数找关键值(如从10亿个浮点数中找出最大的1万个)
5星 · 资源好评率100%
首先,我们来分步骤解决这个问题:
1. **找出最大值和最小值**:
- 初始化两个变量`max_num`和`min_num`,分别设置为数组的第一个元素 `a[0]`。
- 遍历整个数组 `a[1]` 到 `a[5]`,如果当前元素大于`max_num`,更新`max_num`;如果小于`min_num`,更新`min_num`。
- 遍历结束后,`max_num`和`min_num` 就分别是数组中的最大值和最小值。
2. **逆序输出**:
- 使用两个指针,一个指向数组开始(`a[0]`),另一个指向数组结束(`a[5]`)。
- 然后交换这两个位置上的数字,每次移动较大的指针向左一位,直到两个指针相遇,完成逆序。
3. **冒泡排序算法从大到小排序并输出**:
- 冒泡排序的基本思想是从第一个元素开始,两两比较,如果前面的元素比后面的元素小,则交换它们的位置,这个过程会逐轮将当前未排序部分的最大值“冒”到数组尾部。
- 对于从大到小排序,只需稍作修改:如果前一个元素小于后一个元素,则不交换。
- 重复这个过程,直到数组完全有序,即一轮遍历下来没有发生交换,说明已经排好序。
以下是伪代码形式的示例:
```plaintext
// 定义数组 a 和初始值 max_min
int[] a = {键盘输入的6个整数};
int max_num = a[0];
int min_num = a[0];
// 找出最大值和最小值
for (int i = 1; i < 6; i++) {
if (a[i] > max_num) {
max_num = a[i];
}
if (a[i] < min_num) {
min_num = a[i];
}
}
// 输出最大值和最小值
System.out.println("最大值:" + max_num);
System.out.println("最小值:" + min_num);
// 逆序输出
int reverse_index = 0;
for (int i = 5; i >= 0; i--) {
System.out.print(a[i]);
if (i != reverse_index) {
System.out.print(",");
}
reverse_index++;
}
// 冒泡排序
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5-j; k++) {
if (a[k] < a[k+1]) {
// 保持降序,不交换
} else {
int temp = a[k];
a[k] = a[k+1];
a[k+1] = temp;
}
}
}
System.out.println("\n按从大到小排序后的数组:");
for (int i : a) {
System.out.print(i + " ");
}
```
阅读全文