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

C ++でソートされた配列の出現回数(または頻度)をカウントします


整数型要素の並べ替えられた配列が与えられ、その数、たとえばnumが与えられます。タスクは、与えられた要素numが配列に出現する回数のカウントを計算することです。 。

入力 − int arr [] ={1、1、1,2、3、4}、num =1

出力 −ソートされた配列の出現回数(または頻度)の数は− 3

入力 − int arr [] ={2、3、4、5、5、6、-7}、num =5

出力 −ソートされた配列の出現回数(または頻度)の数は− 2

入力-intarr[] ={-1、0、1、2、3}、num =7

出力 −ソートされた配列の出現回数(または頻度)の数は− 0

以下のプログラムで使用されているアプローチは次のとおりです

上記の問題を解決するために従うことができる複数のアプローチがあります。

素朴なアプローチ

  • 正の数と負の数の両方を含む整数要素の配列と、配列内の頻度を見つける必要がある整数変数numを宣言します。

  • 配列のサイズを計算し、すべてのデータを関数に渡してさらに処理します。

  • 一時変数カウントを宣言して、変数numが出現する回数のカウントを格納します

  • 配列のサイズまでiから0までのループFORを開始します

  • ループ内で、IF num =arr [i]を確認してから、countの値を1ずつインクリメントします

  • カウントを返す

  • 結果を印刷します。

効率的なアプローチ

  • 正の数と負の数の両方を含む整数要素の配列と、配列内の頻度を見つける必要がある整数変数numを宣言します。

  • 配列のサイズを計算し、すべてのデータを関数に渡してさらに処理します。

  • 一時変数カウントを宣言して、変数numが出現する回数のカウントを格納します

  • 最初にポインタをlower_bound(arr、arr + size、num)として設定します

  • 最初にIFをチェック=(arr +サイズ)|| (* first!=num)次に0を返します

  • 終了ポインタをupper_bound(first、arr + size、num)として設定します

  • カウントを最後に設定-最初

  • 返品数

  • 結果の印刷

例(素朴なアプローチ)

#include <iostream>
using namespace std;
int frequency_count(int arr[], int num, int size){
   int count = 0;
   for(int i=0; i<size; i++){
      if(num==arr[i]){
         count++;
      }
   }
   return count;
}
int main(){
   int arr[] = {1, 1, 1,2, 3, 4};
   int num = 1;
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of number of occurrences (or frequency) in a sorted array are: "<<frequency_count(arr, num, size);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of occurrences (or frequency) in a sorted array are: 3

例(効率的なアプローチ)

# include <bits/stdc++.h>
using namespace std;
int frequency_count(int arr[], int num, int size){
   int *first = lower_bound(arr, arr+size, num);
   if (first == (arr + size) || *first != num){
      cout<<"The Element is not present in an array ";
      return 0;
   }
   int count = 0;
   int *last = upper_bound(first, arr+size, num);
   count = last - first;
   return count;
}
int main(){
   int arr[] = {1, 1, 1, 2, 3, 4};
   int num = 1;
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of number of occurrences (or frequency) in a sorted array are: "<<frequency_count(arr, num, size);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of occurrences (or frequency) in a sorted array are: 3

  1. C ++のソートされた配列の絶対的な個別のカウント?

    配列は、同じデータ型の要素のコレクションです。 ソートされた配列 は、昇順または降順の順序で要素が格納されている配列です。 明確な数は、同じではない要素の数です。 絶対個別カウントは、要素の絶対値、つまり符号のない要素(符号なしの値)の個別カウントです。 このプログラムでは、ソートされた配列で絶対的な個別のカウントを見つけます。つまり、配列の各要素の絶対値を考慮した場合、個別の値の数をカウントします。 たとえば、 Input : [-3 , 0 , 3 , 6 ] Output : 3 配列には3つの異なる絶対値があり、要素は0、3、および6です。 これを解決するために、さまざまな

  2. 配列内の反転をカウントするC++プログラム

    カウント反転とは、配列をソートするために必要なスイッチの数を意味します。配列がソートされている場合、反転カウント=0。反転カウント=配列が逆の順序でソートされた場合の最大値。 配列内の反転をカウントするC++プログラムを開発しましょう。 アルゴリズム Begin    Function CountInversionArray has arguments a[], n = number of elements.    initialize counter c := 0    for i in range 0 to n-1, do &n