정수 배열이 제공됩니다. 작업은 최소 비교 횟수에서 배열의 최소 및 최대 요소를 찾는 것입니다.
입력
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