Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 정렬되지 않은 배열의 평균과 중앙값 계산하기

개요

정렬되지 않은 배열이 주어졌을 때, 해당 배열의 평균(mean)중앙값(median)을 계산하는 것이 이번 글의 목표입니다. 평균은 데이터의 전체적인 수준을 나타내는 대표값이며, 중앙값은 데이터를 크기 순으로 나열했을 때 가운데 위치하는 값입니다. 각각의 개념과 계산 방법, 그리고 C++ 구현 예제를 순서대로 살펴보겠습니다.

평균(Mean) 계산 방법

평균은 배열에 담긴 모든 값들을 더한 뒤, 요소의 총 개수로 나누어 구합니다. 다음 공식을 사용하면 됩니다.

평균 = (배열 요소들의 합) / (요소의 총 개수)

중앙값(Median) 계산 방법

배열이 이미 정렬되어 있다면, 중앙값은 다음과 같이 결정됩니다.

  • 요소 개수가 홀수인 경우: 정렬된 배열의 가운데 요소가 중앙값입니다.
  • 요소 개수가 짝수인 경우: 가운데 두 요소의 평균이 중앙값입니다.

만약 배열이 정렬되어 있지 않다면, 반드시 먼저 정렬을 수행한 후 위의 로직을 적용해야 합니다.

n이 홀수인 경우

1, 2, 3, 4, 5
중앙값 = 3

n이 짝수인 경우

1, 2, 4, 5
중앙값 = (2 + 4) / 2 = 3

입력 및 출력 예시

입력 1

arr[] = {3,5,2,1,7,8}

출력 1

Mean is : 4.33333
Median is : 4

입력 2

arr[] = {1, 3, 4, 2, 6, 5, 8, 7}

출력 2

Mean is: 4.5
Median is: 4.5

알고리즘

시작
Step 1→ 평균을 계산하는 함수 선언
   double mean(int arr[], int size)
      int sum = 0 선언
      반복문 For int i = 0, i < size, i++
         sum += arr[i]
      종료
      return (double)sum/(double)size
Step 2→ 중앙값을 계산하는 함수 선언
   double median(int arr[], int size)
      sort(arr, arr+size) 호출하여 배열 정렬
      IF (size % 2 != 0)
         return (double)arr[size/2]
      종료
      return (double)(arr[(size-1)/2] + arr[size/2])/2.0
Step 3→ main() 함수에서
   int arr[] = {3,5,2,1,7,8} 선언
   int size = sizeof(arr)/sizeof(arr[0]) 선언
   mean(arr, size) 호출
   median(arr, size) 호출
종료

C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;
// 평균 계산
double mean(int arr[], int size){
   int sum = 0;
   for (int i = 0; i < size; i++)
      sum += arr[i];
   return (double)sum/(double)size;
}
// 중앙값 계산
double median(int arr[], int size){
   sort(arr, arr+size);
   if (size % 2 != 0)
      return (double)arr[size/2];
   return (double)(arr[(size-1)/2] + arr[size/2])/2.0;
}
int main(){
   int arr[] = {3,5,2,1,7,8};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout << "Mean is : " << mean(arr, size)<<endl;
   cout << "Median is : " << median(arr, size) << endl;
   return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Mean is : 4.33333
Median is : 4

마무리

정렬되지 않은 배열에서 평균은 단순히 요소들의 합을 개수로 나누면 되지만, 중앙값은 반드시 배열을 먼저 정렬한 뒤 요소 개수의 홀짝 여부에 따라 계산 방식을 달리해야 한다는 점이 핵심입니다. 위 예제처럼 sort() 함수를 활용하면 간단하게 구현할 수 있으며, 시간 복잡도는 정렬에 사용되는 O(n log n)이 지배적입니다.