计算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

输入-int arr [] = {-1,0,1,2,3},num = 7

输出-已排序数组中出现次数(或频率)的计数为-0

以下程序中使用的方法如下

可以采用多种方法来解决上述问题。

天真的方法

  • 声明一个包含正数和负数以及一个整数变量num的整数元素的数组,我们必须在数组中找到频率。

  • 计算数组的大小,并将所有数据传递给函数以进行进一步处理。

  • 声明一个临时变量计数以存储变量num出现的次数

  • 从i到0开始循环直到数组大小

  • 在循环内部,检查IF num = arr [i],然后将count的值增加1

  • 返回计数

  • 打印结果。

高效的方法

  • 声明一个包含正数和负数以及一个整数变量num的整数元素的数组,我们必须在数组中找到频率。

  • 计算数组的大小,并将所有数据传递给函数以进行进一步处理。

  • 声明一个临时变量计数以存储变量num出现的次数

  • 首先将指针设置为lower_bound(arr,arr + size,num)

  • 首先检查IF =(arr + size)|| (* 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