在 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,我們需要找到它在陣列中的頻率。
計算陣列的大小並將所有資料傳遞給函式以進行進一步處理。
宣告一個臨時變數 count 來儲存變數 num 出現的次數
從 i = 0 開始迴圈到陣列大小
在迴圈內,如果 num = arr[i],則將 count 的值加 1
返回 count
列印結果。
高效演算法
宣告一個包含正數和負數的整數元素陣列和一個整數變數 num,我們需要找到它在陣列中的頻率。
計算陣列的大小並將所有資料傳遞給函式以進行進一步處理。
宣告一個臨時變數 count 來儲存變數 num 出現的次數
將第一個指標設定為 lower_bound(arr, arr+size, num)
如果 first = (arr + size) || (*first != num),則返回 0
將 end 指標設定為 upper_bound(first, arr+size, num)
將 count 設定為 last - first
返回 count
列印結果
示例(樸素演算法)
#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
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP