输入n个有序的数据并存入某一维数组中,求该数组的中位数怎么用C++表示
时间: 2023-11-27 08:54:23 浏览: 107
C/C++ 求中位数的值
可以使用STL中的nth_element函数来求解数组的中位数。
nth_element函数有两个参数:第一个是要求中位数的数组(或者是数组的首地址),第二个是中位数所在的位置。例如,如果数组长度为n,则中位数的位置为(n+1)/2。函数会将数组分成两部分,左边的一部分都小于中位数,右边的一部分都大于中位数。而中位数所在的位置就是这个分界点。
下面是一个示例代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int nums[n];
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
nth_element(nums, nums + (n+1)/2 - 1, nums + n); // 求中位数
cout << nums[(n+1)/2 - 1] << endl; // 输出中位数
return 0;
}
```
需要注意的是,上述代码中定义的数组是动态数组,需要使用C++11及以上的编译器才支持。如果使用的是C++98,可以改为使用静态数组(即指定数组长度)。
阅读全文