大小相同的兩個排序陣列的中位數的 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP