本文介绍了使用 C++ 语言实现求数组中位数的算法,并提供了详细的代码示例。该算法可以有效地计算出给定数组的中位数,无论是奇数个元素还是偶数个元素。

算法原理:

  1. 从键盘输入 n 个整数(以 0 结束),存放在一个一维数组中。
  2. 对数组进行排序。
  3. 如果数组元素个数为奇数,则中位数为最中间的元素;如果数组元素个数为偶数,则中位数为最中间两个元素的平均数。

代码示例:

#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;
}

代码解释:

  1. 代码首先定义了一个大小为 100 的整数数组 arr,并初始化为 0。
  2. 使用 for 循环从键盘输入整数,并将输入的整数存入数组 arr 中,直到输入 0 为止。
  3. 使用嵌套 for 循环对数组 arr 进行排序(使用冒泡排序算法)。
  4. 判断数组元素个数的奇偶性,并根据奇偶性计算中位数。
  5. 最后输出计算得到的中位数。

注意:

  • 代码中的除法运算已经进行了浮点数转换,应该可以得到浮点数结果。
  • 整数数组中的元素都是整数类型,因此对于奇数个元素的数组,中位数将是一个整数。只有对于偶数个元素的数组,中位数才会是一个浮点数。

使用示例:

输入:2 7 9 11 5 4 3 6 8 20 0

输出:6.5

总结:

本文介绍了使用 C++ 实现求数组中位数的算法,并提供了详细的代码示例。该算法可以有效地计算出给定数组的中位数,无论是奇数个元素还是偶数个元素。希望本文对您有所帮助。

C++ 实现求数组中位数算法

原文地址: https://www.cveoy.top/t/topic/SY3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录