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

주어진 목록의 중앙값을 찾는 C 프로그램.

<시간/>

목록의 요소를 순서대로 정렬하면 항목을 양쪽에 동일한 수의 항목으로 두 부분으로 나누는 중간 값을 중앙값이라고 합니다.

홀수 개수의 항목에는 중간 값이 하나만 있는 반면, 짝수개의 항목에는 두 개의 중간 값이 있습니다.

따라서 짝수 항목의 중앙값은 두 중간 값의 평균으로 지정됩니다.

알고리즘

중앙값을 계산하려면 아래의 알고리즘을 참조하십시오.

1단계 - 항목 수를 유지하면서 항목을 배열로 읽습니다.

2단계 - 항목을 오름차순으로 정렬합니다.

3단계 - 중앙값을 계산합니다.

중앙값을 찾기 전에 숫자를 정렬하는 데 사용되는 논리는 다음과 같습니다. -

for (i = 1 ; i <= n-1 ; i++){
   for (j = 1 ; j <= n-i ; j++){
      if (a[j] <= a[j+1]){
         t = a[j];
         a[j] = a[j+1];
         a[j+1] = t;
      } else
      continue ;
   }
}

목록의 중앙값을 찾는 데 사용되는 논리는 다음과 같습니다. -

if ( n % 2 == 0)
   median = (a[n/2] + a[n/2+1])/2.0 ;
else
   median = a[n/2 + 1];

예시

다음은 주어진 숫자의 중앙값을 계산하는 C 프로그램입니다 -

#include<stdio.h>
#define N 10
main( ){
   int i,j,n;
   float median,a[N],t;
   printf("Enter the number of items\n");
   scanf("%d", &n);
   /* Reading items into array a */
   printf("Input %d values \n",n);
   for (i = 1; i <= n ; i++)
   scanf("%f", &a[i]);
   /* Sorting begins */
   for (i = 1 ; i <= n-1 ; i++){ /* Trip-i begins */
      for (j = 1 ; j <= n-i ; j++) {
         if (a[j] <= a[j+1]) { /* Interchanging values */
            t = a[j];
            a[j] = a[j+1];
            a[j+1] = t;
         }
         else
         continue ;
      }
   } /* sorting ends */
   /* calculation of median */
   if ( n % 2 == 0)
      median = (a[n/2] + a[n/2+1])/2.0 ;
   else
   median = a[n/2 + 1];
   /* Printing */
   for (i = 1 ; i <= n ; i++)
   printf("%f ", a[i]);
   printf("\n\nMedian is %f\n", median);
}

출력

위의 프로그램이 실행되면 다음과 같은 출력을 생성합니다 -

Enter the number of items
5
Input 5 values
2.3
1.2
3.8
4.6
8.9
8.900000 4.600000 3.800000 2.300000 1.200000

Median is 3.800000