首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言百數比較大小:從雙數到陣列排序的進階實現

     編輯:C 語言問答

從兩數比較到百數排序的思維轉變

初學者常遇到的問題:如何將「比較兩個整數大小」擴展為「比較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 迴圈批量讀取數據
  • 排序演算法:冒泡排序透過相鄰元素交換將最大值「冒泡」至陣列末尾
  • 時間複雜度:O(n²) 適合中小規模數據;大數據量建議使用快速排序

優化建議

若僅需最大值而非完整排序,單次遍歷即可:

int max = a[0];
for(i = 1; i < 100; i++)
    if(a[i] > max) max = a[i];

此法時間複雜度 O(n),空間複雜度 O(1),效率遠高於排序法。但排序法優勢在於可同時獲得有序序列,便於後續統計分析(如中位數、前K大值等)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved