將四個變數 a, b, c, d 依由小到大順序排列,排序後 a 為最小值,d 為最大值。
使用巢狀迴圈或連續比較交換,確保每一輪將最大值「浮」到右側。程式碼示意:
#include
void sort4(int *a, int *b, int *c, int *d) {
int t;
// 兩兩比較,確保 a <= b <= c <= d
if (*a > *b) { t = *a; *a = *b; *b = t; }
if (*b > *c) { t = *b; *b = *c; *c = t; }
if (*c > *d) { t = *c; *c = *d; *d = t; }
// 第二輪
if (*a > *b) { t = *a; *a = *b; *b = t; }
if (*b > *c) { t = *b; *b = *c; *c = t; }
// 第三輪
if (*a > *b) { t = *a; *a = *b; *b = t; }
}
int main() {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
sort4(&a, &b, &c, &d);
printf("%d %d %d %d\n", a, b, c, d);
return 0;
}
原最佳回答提供手寫流程圖片,此處以標準排序網路實現,邏輯清晰且易擴展。