计算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
以上是 计算C ++中排序数组中的出现次数(或频率) 的全部内容, 来源链接: utcz.com/z/321694.html