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

PAT 基礎練習:分支-07 三數排序(指標交換法省記憶體)

     編輯:關於C語言

題目

輸入三整數,輸出由小到大排序,格式 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);

記憶體對比

  • 指標版:256 KB
  • 直接交換變數版:380 KB
  • Java 提交常見:10,000+ KB

指標僅操作位址(4/8 bytes),避免整數複製與臨時變數開銷,嵌入式/記憶體受限環境極具優勢。

AC 代碼

#include 
int 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;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved