Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tối đa và tối thiểu của một mảng sử dụng số lượng so sánh tối thiểu trong C


Chúng ta được cung cấp với một mảng các số nguyên. Nhiệm vụ là tìm phần tử tối thiểu và lớn nhất của mảng trong số phép so sánh tối thiểu.

Đầu vào

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

Đầu ra

Maximum element : 91 Minimum Element : -3

Giải thích - Ở đây để giảm thiểu số lần so sánh, chúng ta sẽ khởi tạo phần tử tối đa và tối thiểu bằng Arr [0]. Và bắt đầu từ phần tử thứ 2, hãy so sánh từng giá trị với giá trị tối thiểu và tối đa và cập nhật cho phù hợp.

Đầu vào

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

Đầu ra

Maximum element : 31 Minimum Element : 10

Giải thích - Ở đây cũng vậy, để giảm thiểu số lần so sánh, chúng ta sẽ khởi tạo phần tử tối đa và tối thiểu bằng Arr [0]. Và bắt đầu từ phần tử thứ 2, hãy so sánh từng giá trị với giá trị tối thiểu và tối đa và cập nhật cho phù hợp.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một mảng số nguyên có các số là Arr []

  • Hàm getresult (int arr [], int n) là để tìm phần tử lớn nhất và nhỏ nhất có trong mảng theo số không tối thiểu. so sánh.

  • Nếu chỉ có một phần tử thì chúng tôi sẽ khởi tạo các biến max và min bằng arr [0].

  • Đối với nhiều phần tử, chúng tôi sẽ khởi tạo max với arr [1] và min với arr [0].

  • Vòng lặp Inside for bắt đầu đi ngang từ phần tử thứ ba (i =2) cho đến phần tử cuối cùng.

  • Bây giờ chúng ta sẽ so sánh từng giá trị (arr [i]) với min và max. Nếu nó nhỏ hơn min, hãy cập nhật min bằng arr [i]. Nếu nó lớn hơn giá trị tối đa, thì hãy cập nhật giá trị tối đa bằng arr [i].

  • Cuối cùng, in kết quả được lưu trữ trong các biến max và min.

Ví dụ

#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);
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Minimum element: -11 Maximum element: 330