大小相同的两个排序数组的中位数的 C/C++ 程序?
这里我们将了解如何求大小相同的两个已排序数组的中位数。我们将使用 C++ STL 来存储数组元素。在获得两个数组后,我们将把它们合并成一个数组。由于大小相同的两个数组被合并,因此最终数组将始终包含偶数个元素。我们需要取两个中间元素,然后求其平均值作为中位数。
算法
median(arr1, arr2)
Begin arr3 := array after merging arr1 and arr2 sort arr3 len := length of arr3 mid := len/2 median := (arr3[mid] + arr3[mid-1])/2 return median End
示例
#include<iostream> #include<vector> #include<algorithm> using namespace std; float median(vector<int> arr1, vector<int> arr2) { vector arr3(arr1.size() + arr2.size()); merge(arr1.begin(), arr1.end(), arr2.begin(), arr2.end(), arr3.begin()); sort(arr3.begin(), arr3.end()); int len = arr3.size(); int mid = len/2; return float(arr3[mid] + arr3[mid-1])/2; } main() { vector<int> arr1 = {1, 3, 4, 6, 7}; vector<int> arr2 = {4, 5, 7, 8, 9}; cout << "Median: " << median(arr1, arr2); }
输出
Median: 5.5
广告