Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm tần số của các phần tử mảng trong C ++


Chúng tôi được cung cấp một mảng các phần tử nguyên chứa các giá trị trùng lặp và nhiệm vụ là tính tần số của các phần tử riêng biệt có trong một mảng và in kết quả.

Đầu vào - int arr [] ={1, 1, 2, 3, 4, 1, 2, 3}

Đầu ra -

frequency of 1 is: 3
frequency of 2 is: 2
frequency of 3 is: 2
Frequency of 4 is: 1

Đầu vào - int arr [] ={2, 3, 4, 1, 5}

Đầu ra -

frequency of 1 is: 1
frequency of 2 is: 1
frequency of 3 is: 1
Frequency of 4 is: 1
Frequency of 5 is: 1

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Có thể có nhiều giải pháp cho điều này và những giải pháp đó có thể đơn giản hơn về thuật ngữ mã hóa hoặc đơn giản hơn về độ phức tạp. Vì vậy, trước tiên chúng ta hãy xem xét cách tiếp cận đơn giản hơn trong thuật ngữ mã hóa

  • Tạo một mảng các biến kiểu số nguyên

  • Tính kích thước của một mảng bằng cách sử dụng hàm size ().

  • Tạo một mảng boolean, giả sử kiểm tra kích thước mảng

  • Bắt đầu vòng lặp FOR từ tôi đến 0 và tôi nhỏ hơn kích thước

  • Trong vòng lặp, hãy đặt kiểm tra [i] =0

  • Bắt đầu vòng lặp FOR từ tôi đến 0 và tôi nhỏ hơn kích thước

  • Bên trong vòng lặp, kiểm tra IF check [i] =1 rồi tiếp tục

  • Khai báo số lượng biến và khởi tạo nó bằng 1 sẽ in ra số lượng tần suất

  • Bắt đầu vòng lặp FOR j từ i + 1 cho đến hết kích thước

  • Bên trong vòng lặp, hãy kiểm tra xem arr [i] =arr [j], sau đó đặt kiểm tra [j] thành 1 và tăng số lượng lên 1

  • In giá trị của số đếm.

Một giải pháp khác của nó có thể là -

  • Tạo một mảng các biến kiểu số nguyên

  • Tính kích thước của một mảng bằng cách sử dụng hàm size ().

  • Tạo một biến kiểu unsrdered_map, giả sử như um

  • Bắt đầu vòng lặp FOR từ i đến 0 và cho đến kích thước

  • Bên trong vòng lặp, đặt um [arr [i]] ++

  • Bắt đầu một vòng lặp khác cho từ tự động x đến ô

  • Trong vòng lặp, hãy in tần số.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int frequency(int arr[], int size){
   bool check[size];
   for(int i=0;i<size;i++){
      check[i] = 0;
   }
   for(int i=0; i<size; i++){
      if(check[i]== 1){
         continue;
      }
      int count = 1;
      for(int j = i+1; j<size; j++){
         if (arr[i] == arr[j]){
            check[j] = 1;
            count++;
         }
      }
      cout<<"frequency of "<<arr[i]<<" is: " << count << endl;
   }
}
int main(){
   int arr[] = {1, 2, 3, 1, 2, 3};
   //calculate the size of an array
   int size = sizeof(arr) / sizeof(arr[0]);
   //call function to calculate the frequency
   frequency(arr, size);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

frequency of 1 is: 2
frequency of 2 is: 2
frequency of 3 is: 2

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void frequency(int arr[], int size){
   unordered_map<int, int< um;
   for (int i = 0; i < size; i++){
      um[arr[i]]++;
   }
   for (auto x : um){
      cout<<"frequency of "<<x.first<<" is: "<< x.second<< endl;
   }
}
int main(){
   int arr[] = {1, 2, 3, 1, 2, 3 };
   int size = sizeof(arr) / sizeof(arr[0]);
   frequency(arr, size);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

frequency of 3 is: 2
frequency of 1 is: 2
frequency of 2 is: 2