C++求求无序数组的中位数,当数组个数为偶数时,返回中间两个数中较大的一个数
时间: 2024-09-15 08:15:18 浏览: 73
C++算法之在无序数组中选择第k小个数的实现方法
在C++中,如果需要计算无序整数数组的中位数,并且数组元素个数为偶数,通常我们会遵循以下步骤:
1. 首先,对整个数组进行排序。你可以选择快速排序、归并排序或其他稳定的排序算法,因为我们需要保持相对位置不变。
```cpp
#include <algorithm>
std::sort(arr, arr + n); // 对数组arr进行排序,n为数组长度
```
2. 排序完成后,由于数组长度是偶数,中位数将是第(n/2)和第(n/2+1)个元素的较大值。因此,我们可以直接访问这两个元素来获取结果:
```cpp
int median = (n % 2 == 0) ? arr[n / 2] : (arr[(n - 1) / 2] + arr[n / 2]) / 2;
```
这里`n % 2 == 0`检查数组是否为偶数。如果是,取中间元素;如果不是,取中间两个元素的平均值。
完整的函数示例可能如下:
```cpp
double findMedian(int* arr, int n) {
std::sort(arr, arr + n);
if (n % 2 == 0)
return static_cast<double>(arr[n / 2]);
else
return static_cast<double>(arr[(n - 1) / 2]);
}
```
阅读全文