本範例實作 sort 函數,接收三個整數參數,透過三次兩兩比較與交換,將數值由大到小排序並輸出。演算法邏輯:先確保第一參數為最大值,再確保第二參數大於第三,最終達到遞減排序。雖非通用排序演算法,但針對固定三數場景極為高效且易懂。
a 與 b,若 a < b 則交換,確保 a 為三者中最大。a 與 c,若 a < c 則交換,進一步確保 a 為最大。b 與 c,若 b < c 則交換,確保 b >= c。#include <stdio.h>
void sort(int a, int b, int c) {
int t;
if (a < b) { t = a; a = b; b = t; }
if (a < c) { t = a; a = c; c = t; }
if (b < c) { t = b; b = c; c = t; }
printf("由大到小排序:%d %d %d\n", a, b, c);
}
int main() {
int a, b, c;
printf("請輸入三個整數:");
scanf("%d %d %d", &a, &b, &c);
sort(a, b, c);
return 0;
}
請輸入三個整數:3 9 5 由大到小排序:9 5 3
此程式展示值傳遞參數的排序邏輯,適合初學者理解比較交換與暫存變數交換技巧。若需將結果回傳主程式,可改用指標參數或結構體回傳。