Computer >> Máy Tính >  >> Lập trình >> lập trình C

C / C ++ Chương trình cho Trung vị của hai mảng được sắp xếp có cùng kích thước?

Ở đây chúng ta sẽ xem cách lấy trung vị của hai mảng đã sắp xếp có cùng kích thước. Chúng ta sẽ sử dụng C ++ STL để lưu trữ các phần tử của mảng. Sau khi nhận được hai mảng, chúng tôi sẽ hợp nhất chúng thành một. Khi hai mảng có cùng kích thước được hợp nhất, thì mảng cuối cùng sẽ luôn chứa số phần tử chẵn. Chúng ta cần lấy hai yếu tố ở giữa, sau đó lấy giá trị trung bình của chúng cho yếu tố trung bình.

Thuật toán

trung vị (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

Ví dụ

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

Đầu ra

Median: 5.5