使用最少比較次數在C語言中查詢陣列的最大值和最小值
給定一個整數陣列,任務是找到陣列中最小和最大的元素,並使用最少的比較次數。
輸入
Arr[] = { 1,2,4,5,-3,91 }
輸出
Maximum element : 91 Minimum Element : -3
解釋 − 為了最大限度地減少比較次數,我們將最大值和最小值初始化為Arr[0]。從第二個元素開始,將每個值與min和max進行比較,並相應地更新。
輸入
Arr[] = { 10,20,21,31,18,11 }
輸出
Maximum element : 31 Minimum Element : 10
解釋 − 同樣,為了最大限度地減少比較次數,我們將最大值和最小值初始化為Arr[0]。從第二個元素開始,將每個值與min和max進行比較,並相應地更新。
下面程式中使用的方法如下:
我們取一個整數陣列,其數字為Arr[]
函式getresult( int arr[],int n)用於查詢陣列中最大和最小的元素,並使用最少的比較次數。
如果只有一個元素,我們將使用arr[0]初始化變數max和min。
對於多個元素,我們將使用arr[1]初始化max,使用arr[0]初始化min。
在for迴圈內部,從第三個元素(i=2)遍歷到最後一個元素。
現在,我們將每個值(arr[i])與min和max進行比較。如果它小於min,則使用arr[i]更新min。如果它大於max,則使用arr[i]更新max。
最後,列印儲存在max和min變數中的結果。
示例
#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
廣告