在C語言程式設計中,尋找陣列中的最大值與最小值是最基礎也最常見的演算法練習之一。這個範例展示了如何透過迴圈遍歷陣列,比較每個元素來找出極值。
#include <stdio.h>
int main() {
int i = 0;
int max = 0, min = 0;
int arr[10];
printf("請輸入10個整數: ");
for(i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
// 初始化最大值和最小值為第一個元素
max = arr[0];
min = arr[0];
// 遍歷陣列尋找極值
for(i = 0; i < 10; i++) {
if(max < arr[i]) max = arr[i];
if(min > arr[i]) min = arr[i];
}
printf("max=%d, min=%d\n", max, min);
return 0;
}
1. 陣列宣告與輸入
程式首先宣告一個包含10個整數的陣列 arr[10],然後使用 for 迴圈配合 scanf 讓使用者輸入10個整數。
2. 極值初始化
關鍵步驟是將 max 和 min 都初始化為陣列的第一個元素 arr[0]。這比初始化為 0 更合理,因為輸入的數字可能全是負數或全是正數。
3. 單次遍歷尋找極值
只需要一個迴圈就能同時找到最大值和最小值:每次迴圈檢查當前元素是否大於目前的最大值,或小於目前的最小值,若是則更新對應變數。時間複雜度為 O(n)。
scanf 的回傳值,確保輸入格式正確若需同時記錄最大值和最小值的索引位置,可額外宣告 maxIndex 和 minIndex 變數,在更新極值時同步記錄索引。