我们给了一个排序后的整数类型元素数组,数字为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