Xét chương trình C++ tìm trung vị các phần tử khi các phần tử được lưu trong 2 mảng khác nhau.
Thuật toán
Begin Hàm Median() có hai mảng a1[], a2[] và n = số phần tử mảng làm tham số: Khởi tạo i, j bằng 0, n1, n2 bằng -1 for c từ 0 đến n, làm if i = n, thì n1 := n2 n2 := a2[0] thoát vòng lặp else if j = n, thì n1 := n2 n2 := a1[0] thoát vòng lặp if a1[i] < a2[j], thì n1 := n2 n2 := a1[i] tăng i 1 else n1 := n2 n2 := a2[i] tăng j 1 done trả về trung bình của n1 và n2. End.
Mã ví dụ
#include<iostream> #include <bits/stdc++.h> using namespace std; int Median(int a1[],int a2[], int n) { int i = 0; int j = 0; int c; int n1 = -1, n2 = -1; for (c = 0; c <= n; c++) { if (i == n) { n1 = n2; n2 = a2[0]; break; } else if (j == n) { n1 = n2; n2 = a1[0]; break; } if (a1[i] < a2[j]) { n1 = n2; n2 = a1[i]; i++; } else { n1 = n2; n2 = a2[j]; j++; } } return (n1 + n2)/2; } int main() { int n1,n2, i; cout<<"\nEnter the number of elements for 1st array: "; cin>>n1; int a1[n1]; for(i = 0; i < n1; i++) { cout<<"Enter element for 1st array"<<i+1<<": "; cin>>a1[i]; } cout<<"\nEnter the number of elements for 2nd array: "; cin>>n2; int a2[n2]; for(i = 0; i < n2; i++) { cout<<"Enter element for 2nd array "<<i+1<<": "; cin>>a1[i]; } if (n1 == n2) cout << "Median is " << Median(a1, a2, n1) ; else cout << "Doesn't work for arrays" << " of unequal size"; return 0; }Kết quả
Enter the number of elements for 1st array: 5 Enter element for 1st array1: 2 Enter element for 1st array2: 4 Enter element for 1st array3: 6 Enter element for 1st array4: 7 Enter element for 1st array5: 9 Enter the number of elements for 2nd array: 5 Enter element for 2nd array 1: 20 Enter element for 2nd array 2: 40 Enter element for 2nd array 3: 60 Enter element for 2nd array 4: 70 Enter element for 2nd array 5: 90 Median is 20