使用最少比較次數在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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP