Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정렬된 배열의 발생 횟수(또는 빈도) 계산


정렬된 유형 요소의 배열이 제공되고 숫자가 num이라고 가정해 보겠습니다. 작업은 주어진 요소 num이 배열에 나타나는 횟수를 계산하는 것입니다. .

입력 - 정수 arr[] ={1, 1, 1,2, 3, 4}, 숫자 =1

출력 − 정렬된 배열의 발생 횟수(또는 빈도)는 − 3입니다.

입력 - 정수 arr[] ={2, 3, 4, 5, 5, 6, -7}, 숫자 =5

출력 − 정렬된 배열에서 발생 횟수(또는 빈도)는 − 2

입니다.

입력 - 정수 arr[] ={-1, 0, 1, 2, 3}, 숫자 =7

출력 − 정렬된 배열에서 발생 횟수(또는 빈도)는 − 0입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

위의 문제를 해결하기 위해 따를 수 있는 여러 가지 접근 방식이 있을 수 있습니다.

순진한 접근 방식

  • 양수와 음수를 모두 포함하는 정수 요소 배열과 배열에서 빈도를 찾아야 하는 정수 변수 num을 선언합니다.

  • 배열의 크기를 계산하고 추가 처리를 위해 모든 데이터를 함수에 전달합니다.

  • 변수 num이 나타나는 횟수를 저장하는 임시 변수 count 선언

  • 배열의 크기까지 i에서 0까지 FOR 루프 시작

  • 루프 내에서 IF num =arr[i]를 확인한 다음 count 값을 1 증가

  • 개수 반환

  • 결과를 인쇄하십시오.

효율적인 접근 방식

  • 양수와 음수를 모두 포함하는 정수 요소 배열과 배열에서 빈도를 찾아야 하는 정수 변수 num을 선언합니다.

  • 배열의 크기를 계산하고 추가 처리를 위해 모든 데이터를 함수에 전달합니다.

  • 변수 num이 나타나는 횟수를 저장하는 임시 변수 count 선언

  • 포인터를 먼저 lower_bound(arr, arr+size, num)

    로 설정합니다.
  • IF 먼저 확인 =(arr + 크기) || (*첫 번째 !=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