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

C++에서 배열의 고유 요소 수 계산

<시간/>

반복적인 요소를 포함하는 모든 크기의 정렬되지 않은 배열이 제공되며 작업은 배열의 고유한 요소 수를 계산하는 것입니다.

배열은 같은 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장할 수 있는 일종의 데이터 구조입니다. 배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다.

예를 들어

Input− int arr[] = {1, 1, 2, 3, 3, 4, 4}
Output − count is 4

설명 − 주어진 배열에는 4개의 고유한 요소가 있으며 1, 2, 3, 4이지만 반복적인 요소를 포함하고 있는 배열의 크기는 7이고 중복 요소를 제거한 다음 배열 요소를 계산하는 것이 우리의 작업이었습니다.

Input − int arr[] = {1, 2, 3, 4, 5, 5, 5, 5}
Output − count is 5

설명 − 주어진 배열에는 5개의 고유한 요소가 있으며 1, 2, 3, 4, 5이지만 반복적인 요소를 포함하고 있는 배열의 크기는 8이고 중복 요소를 제거한 다음 배열 요소의 수를 세는 것이 작업이었습니다.

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

정렬 함수() 사용

  • arr[]

    의 배열을 만듭니다.
  • 배열의 요소에 따라 정수 값을 반환하는 length() 함수를 사용하여 배열의 길이를 계산합니다.

  • sort 함수를 호출하고 배열과 배열의 크기를 매개변수로 전달합니다.

  • 고유한 요소의 수를 저장할 임시 변수를 사용합니다.

  • i가 배열의 크기보다 작아질 때까지 루프를 i에서 0으로 시작

  • 루프 내에서 i 동안 실행

  • while 내부에서 i

    의 값을 증가시킵니다.
  • 그리고 내부에서 count의 값을 증가시키십시오.

  • 반품 횟수

  • 결과를 인쇄하십시오.

정렬 없이

  • arr[]

    의 배열을 만듭니다.
  • 배열의 요소에 따라 정수 값을 반환하는 length() 함수를 사용하여 배열의 길이를 계산합니다.

  • 고유한 요소의 수를 저장할 임시 변수를 사용합니다.

  • i가 배열의 크기보다 작을 때까지 루프를 i에서 1로 시작합니다.

  • 루프 내에서 j를 0으로 설정하고 j를 0으로, j를 i보다 작게 설정하고 j wth 1을 증가시켜 다른 루프를 시작합니다.

  • 이 루프 내에서 arr[i] =arr[j]인지 확인한 다음 break

  • 이 루프 내에서 i =j인지 확인한 다음 카운트를 1 증가시킵니다.

  • 반품 횟수

  • 결과를 인쇄하십시오.r

예시

정렬 사용

#include <algorithm>
#include <iostream>
using namespace std;
int distinct_elements(int arr[], int n){
   // Sorting the array
   sort(arr, arr + n);
   // Traverse the sorted array
   int count = 0;
   for (int i = 0; i < n; i++){
      // Moving the index when duplicate is found
      while (i < n - 1 && arr[i] == arr[i + 1]){
         i++;
      }
      count++;
   }
   return count;
}
// Main Function
int main(){
   int arr[] = { 3, 6, 5, 8, 2, 3, 4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<"count is "<<distinct_elements(arr, n);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -

count is 6

예시

정렬 없이

#include <iostream>
using namespace std;
int countDistinct(int a[], int size){
   int i, j, count = 1;
   for (i = 1; i < size; i++){
      for (j = 0; j < i; j++){
         if (a[i] == a[j]){
            break;
         }
      }
      if (i == j){
         count++;
      }
   }
   return count;
}
// Main function
int main(){
   int a[] = { 3, 6, 5, 8, 2, 3, 4 };
   int size = sizeof(a) / sizeof(a[0]);
   cout << "count is "<<countDistinct(a, size);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -

count is 6