C++ 实现求数组中位数算法
本文介绍了使用 C++ 语言实现求数组中位数的算法,并提供了详细的代码示例。该算法可以有效地计算出给定数组的中位数,无论是奇数个元素还是偶数个元素。
算法原理:
- 从键盘输入 n 个整数(以 0 结束),存放在一个一维数组中。
- 对数组进行排序。
- 如果数组元素个数为奇数,则中位数为最中间的元素;如果数组元素个数为偶数,则中位数为最中间两个元素的平均数。
代码示例:
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int arr[100] = {0};
int n, num;
double arave;
for (n = 0;; n++) {
cin >> num;
if (num == 0) {
break;
}
arr[n] = num;
}
int i, j, a;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i; j++) {
if (arr[j] > arr[j + 1]) {
a = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = a;
}
}
}
if ((n + 1) % 2 == 0) {
arave = (arr[((n + 1) / 2) - 1] + arr[((n + 1) / 2)]) / 2.0;
}
else {
arave = arr[(n + 2) / 2];
}
cout << arave << endl;
return 0;
}
代码解释:
- 代码首先定义了一个大小为 100 的整数数组
arr,并初始化为 0。 - 使用
for循环从键盘输入整数,并将输入的整数存入数组arr中,直到输入 0 为止。 - 使用嵌套
for循环对数组arr进行排序(使用冒泡排序算法)。 - 判断数组元素个数的奇偶性,并根据奇偶性计算中位数。
- 最后输出计算得到的中位数。
注意:
- 代码中的除法运算已经进行了浮点数转换,应该可以得到浮点数结果。
- 整数数组中的元素都是整数类型,因此对于奇数个元素的数组,中位数将是一个整数。只有对于偶数个元素的数组,中位数才会是一个浮点数。
使用示例:
输入:2 7 9 11 5 4 3 6 8 20 0
输出:6.5
总结:
本文介绍了使用 C++ 实现求数组中位数的算法,并提供了详细的代码示例。该算法可以有效地计算出给定数组的中位数,无论是奇数个元素还是偶数个元素。希望本文对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/SY3 著作权归作者所有。请勿转载和采集!