初學者常遇到的問題:如何將「比較兩個整數大小」擴展為「比較100個整數並找出最大值」?本文透過經典案例展示從簡單邏輯到陣列排序的演進過程。
#include <stdio.h>
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a > b) printf("%d\n", a);
else printf("%d\n", b);
return 0;
}
當數據量增大時,必須引入陣列存儲並透過排序獲取極值:
#include <stdio.h>
int main() {
int a[100], i, j, temp;
printf("輸入100個數字:\n");
for(i = 0; i < 100; i++) scanf("%d", &a[i]);
// 冒泡排序(升序)
for(i = 0; i < 99; i++) {
for(j = 0; j < 99 - i; j++) {
if(a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
printf("最大值為: %d\n", a[99]);
return 0;
}
int a[100] 分配連續空間存儲100個整數for 迴圈批量讀取數據若僅需最大值而非完整排序,單次遍歷即可:
int max = a[0];
for(i = 1; i < 100; i++)
if(a[i] > max) max = a[i];
此法時間複雜度 O(n),空間複雜度 O(1),效率遠高於排序法。但排序法優勢在於可同時獲得有序序列,便於後續統計分析(如中位數、前K大值等)。