C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で整数配列の中央値を見つけるプログラム


次のメソッドを含むMedianClassという名前のクラスを実装する必要があるとします-

  • データ構造に値を追加するadd(value)。

  • median()は、データ構造に現在存在するすべての数値の中央値を検索します。

したがって、5、3、8を追加して中央値を見つけると、出力は5.0になり、9を追加して中央値を見つけると、出力は6.5になります。

これを解決するには、次の手順に従います-

  • 優先キューを左右に定義する

  • addNumメソッドを定義します。これは数値を入力として受け取ります-

  • leftが空の場合、またはnum

    • numを左に挿入

  • それ以外の場合

    • 右にnumを挿入

  • 左のサイズ<右のサイズの場合

    • temp:=右の一番上の要素

    • 右からアイテムを削除

    • 左に温度を挿入

  • 左のサイズ-右のサイズ>1の場合、

    • temp:=左の一番上の要素

    • 左からアイテムを削除

    • 温度を右に挿入

  • findMedian()メソッドを定義します。これは次のように機能します-

左のサイズ>右のサイズの場合は左上を返し、それ以外の場合は(左上+右上)/ 2理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
typedef double lli;
class MedianClass {
   priority_queue <int> left;
   priority_queue <int, vector <int>, greater<int>> right;
   public:
   void addNum(int num) {
      if(left.empty() || num<left.top()){
         left.push(num);
      }else right.push(num);
      if(left.size()<right.size()){
         lli temp = right.top();
         right.pop();
         left.push(temp);
      }
      if(left.size()−right.size()>1){
         lli temp = left.top();
         left.pop();
         right.push(temp);
      }
   }
   double findMedian() {
      return
      left.size()>right.size()?left.top():(left.top()+right.top())*0.5;
   }
};
main(){
   MedianClass ob;
   ob.addNum(5);
   ob.addNum(3);
   ob.addNum(8);
   cout << ob.findMedian() << " ";
   ob.addNum(9);
   cout << ob.findMedian() << endl;
}

入力

ob.addNum(5);
ob.addNum(3);
ob.addNum(8);
cout << ob.findMedian() << endl;
ob.addNum(9);
cout << ob.findMedian() << endl;

出力

5.0
6.5

  1. LCMを見つけるためのC++プログラム

    2つの数値の最小公倍数(LCM)は、両方の倍数である最小公倍数です。 例:15と9の2つの数字があるとします。 15 = 5 * 3 9 = 3 * 3 したがって、15と9のLCMは45です。 2つの数値のLCMを見つけるプログラムは次のとおりです- 例 #include <iostream> using namespace std; int main() {    int a=7, b=5, lcm;    if(a>b)    lcm = a;    else    

  2. GCDを見つけるためのC++プログラム

    2つの数値の最大公約数(GCD)は、両方を除算する最大の数値です。 例:45と27の2つの数字があるとします。 45 = 5 * 3 * 3 27 = 3 * 3 * 3 したがって、45と27のGCDは9です。 2つの数値のGCDを見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int gcd(int a, int b) {    if (b == 0)    return a;    return gcd(b, a % b); } int