輸入三整數,輸出由小到大排序,格式 a->b->c。
僅交換指標而非資料本身,減少記憶體搬移:
int a,b,c, *pa=&a, *pb=&b, *pc=&c, *tmp;
if (*pa > *pb) { tmp=pa; pa=pb; pb=tmp; }
if (*pb > *pc) { tmp=pb; pb=pc; pc=tmp; }
if (*pa > *pb) { tmp=pa; pa=pb; pb=tmp; }
printf("%d->%d->%d", *pa, *pb, *pc);
指標僅操作位址(4/8 bytes),避免整數複製與臨時變數開銷,嵌入式/記憶體受限環境極具優勢。
#includeint main() { int a,b,c, *pa=&a, *pb=&b, *pc=&c, *tmp; scanf("%d%d%d", pa, pb, pc); if (*pa > *pb) { tmp=pa; pa=pb; pb=tmp; } if (*pb > *pc) { tmp=pb; pb=pc; pc=tmp; } if (*pa > *pb) { tmp=pa; pa=pb; pb=tmp; } printf("%d->%d->%d", *pa, *pb, *pc); return 0; }