C ++程序查找元素的中位数,其中元素存储在2个不同的数组中

我们将考虑一个C ++程序来查找元素的中位数,其中元素存储在2个不同的数组中。

算法

Begin
   Function Median() has Two arrays a1[], a2[] and n = numbers of elements of the array as arguments:
   Initialize i and j by 0, and n1 and n2 by -1
   for c in range 0 to n, do
      if i = n, then
         n1 := n2
         n2 := a2[0]
      break the loop
      else if j = n, then
         n1 := n2
         n2 := a1[0]
      break the loop
      if a1[i] < a2[j], then
         n1 := n2
         n2 := a1[i]
         increase i by 1
      else
         n1 := n2
         n2 := a2[i]
         increase j by 1
      done
      return the average of n1 and n2.
End.

范例程式码

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

输出结果

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