題目
請使用 C 或 Java 語言寫一副程式,此副程式對一個長度為 10 的整數陣列 A[0:9],最多花費 15 次的數值比較運算,尋找陣列中的最小值及最大值,並分別存入 Min 及 Max。(注意:請加註解說明程式碼寫法)
【103.關務】答案
#include <stdio.h>
int max,min;
void findMinMax(int A[10],int *max ,int *min){
//初始化,一開始先比大小,大的值存入*max ,小的值存入*min
if(A[0]>A[1]){
*max = A[0];
*min = A[1];
}
else{
*max = A[1];
*min = A[0];
}
//兩兩抓出來必較,大的值跟max比,小的值跟min比
for(int i=2;i<10;i+=2)
if(A[i] > A[i+1]){
if(A[i] > *max)
*max = A[i];
if(A[i+1] < *min)
*min = A[i+1];
}
else{
if(A[i+1] > *max)
*max = A[i+1];
if(A[i] < *min)
*min = A[i];
}
}
考點分析
這題的重點是用for迴圈分別找最大值跟最小值要找18次,但如果使用兩兩一組的方式比較,就可以降為13次。