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

C에서 최소 비교 횟수를 사용하는 배열의 최대값과 최소값


정수 배열이 제공됩니다. 작업은 최소 비교 횟수에서 배열의 최소 및 최대 요소를 찾는 것입니다.

입력

Arr[] = { 1,2,4,5,-3,91 }

출력

Maximum element : 91 Minimum Element : -3

설명 − 여기서는 비교 횟수를 최소화하기 위해 Arr[0]으로 최대 및 최소 요소를 초기화합니다. 그리고 두 번째 요소부터 시작하여 각 값을 최소값과 최대값과 비교하고 그에 따라 업데이트합니다.

입력

Arr[] = { 10,20,21,31,18,11 }

출력

Maximum element : 31 Minimum Element : 10

설명 − 여기에서도 비교 횟수를 최소화하기 위해 Arr[0]으로 최대값과 최소값을 초기화합니다. 그리고 두 번째 요소부터 시작하여 각 값을 최소값과 최대값과 비교하고 그에 따라 업데이트합니다.

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

  • Arr[]

    로 숫자가 있는 정수 배열을 사용합니다.
  • getresult( int arr[],int n) 함수는 배열에 존재하는 최소값과 최대값을 찾는 것입니다. 비교.

  • 요소가 하나만 있는 경우 변수 max 및 min을 arr[0] 으로 초기화합니다.

  • 하나 이상의 요소에 대해 최대값은 arr[1]로, 최소값은 arr[0]으로 초기화합니다.

  • for 루프 내부는 세 번째 요소( i=2 )에서 마지막까지 순회 시작합니다.

  • 이제 각 값( arr[i] )을 최소값 및 최대값과 비교할 것입니다. min보다 작으면 min을 arr[i]로 업데이트합니다. 최대값보다 크면 최대값을 arr[i]로 업데이트합니다.

  • 결국 최대 및 최소 변수에 저장된 결과를 인쇄합니다.

예시

#include <stdio.h>
#include <math.h>
int getresult(int arr[], int n){
   int min=0,max=0;
   /*If there is only one element then return it as min and max both*/
   if (n == 1)
      { min=max=arr[0]; }
   /* If there are more than one elements, then initialize min and max*/
   if (arr[0] > arr[1]){
      max = arr[0];
      min = arr[1];
   }
   else{
      max = arr[1];
      min = arr[0];
   }
   for (int i = 2; i<n; i++){
      if (arr[i] > max)
         max = arr[i];
      else if (arr[i] < min)
         min = arr[i];
   }
   printf(" Minimum element: %d", min);
   printf(" Maximum element: %d", max);
}
/* Driver program to test above function */
int main(){
   int arr[] = {200, 191, 112, -11, 330, 60};
   int n = 6;
   getresult (arr, n);
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Minimum element: -11 Maximum element: 330