C++ 冒泡排序算法:查找数组极值并排序
C++ 冒泡排序算法:查找数组极值并排序
本文将介绍如何使用 C++ 实现冒泡排序算法,并通过自定义函数查找数组中的最大值或最小值。
1. 算法原理
冒泡排序算法是一种简单的排序算法,它通过不断比较相邻元素,并将较大的元素交换到较小的元素后面,最终将数组排序。
2. 函数设计
我们设计一个函数 findExtremeAndSort,它接收一个整型数组、元素个数、冒泡方向和极值类型作为参数,并对数组进行排序。
void findExtremeAndSort(int arr[], int n, int direction, int extremeType) {
// 循环遍历数组
for (int i = 0; i < n - 1; i++) {
// 比较相邻元素
for (int j = 0; j < n - i - 1; j++) {
// 根据方向和极值类型进行比较和交换
if ((direction == 1 && extremeType == 1 && arr[j] > arr[j + 1]) ||
(direction == 1 && extremeType == 2 && arr[j] < arr[j + 1]) ||
(direction == 2 && extremeType == 1 && arr[j] < arr[j + 1]) ||
(direction == 2 && extremeType == 2 && arr[j] > arr[j + 1])) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// 打印每轮排序后的数组
for (int k = 0; k < n; k++) {
cout << arr[k] << ' ';
}
cout << endl;
}
}
3. 主函数实现
在主函数中,我们首先输入整数 n 和 n 个整数,然后输入冒泡方向和极值类型,最后调用 findExtremeAndSort 函数进行排序并打印排序过程。
int main() {
int n, direction, extremeType;
cin >> n;
int arr[20];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cin >> direction >> extremeType;
// 调用函数进行排序
findExtremeAndSort(arr, n, direction, extremeType);
return 0;
}
4. 样例输入和输出
- 样例输入 1
5
23 12 54 32 67
1 2
- 样例输出 1
12 23 32 54 67
12 23 32 54 67
12 23 32 54 67
12 23 32 54 67
12 23 32 54 67
- 样例输入 2
5
23 12 54 32 67
2 1
- 样例输出 2
67 54 32 23 12
67 54 32 23 12
67 54 32 23 12
67 54 32 23 12
67 54 32 23 12
5. 代码说明
direction表示冒泡方向:1 表示正向(从前向后),2 表示反向(从后向前)。extremeType表示极值类型:1 表示最大值,2 表示最小值。- 代码中使用嵌套循环进行比较和交换,外层循环控制排序轮数,内层循环控制比较的元素。
- 代码中使用
if语句判断元素是否需要交换,根据direction和extremeType的不同取值进行不同的判断。 - 代码中使用
cout打印每轮排序后的数组。
6. 总结
本文介绍了使用 C++ 实现冒泡排序算法,并通过自定义函数查找数组中的最大值或最小值。通过代码示例、输入输出说明和样例演示,读者可以更好地理解冒泡排序算法的原理和应用。
注意:
- 代码中的数组大小设置为 20,读者可以根据实际情况进行调整。
- 代码中使用
cout打印排序过程,读者可以根据实际需求进行修改。 - 代码中使用
cin获取用户输入,读者可以根据实际情况进行修改。 - 代码仅供参考,读者可以根据实际需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/nWpQ 著作权归作者所有。请勿转载和采集!