本文主要介紹三種數值型資料交換方法間的比較:
比如要交換的資料分別為a和b
1、方法一:
通過新增乙個中間值的方式來交換,
**如下:a和b為整型資料,定義乙個中間的整型數值temp,
temp = a;
a = b;
b = temp;
2、方法二:#define swap(a,b) (a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b);
該方法需要考慮到數值的溢位,因為a與b相加可能會照成a的值超出其範圍
3、方法三:#define swap(a,b) (a)=(a)^(b);(b)=(a)^(b);(a)=(a)^(b);
該方法的缺點是理解比較麻煩。
在空間方面,方法二和方法三的空間開銷低於方法一的
#include
#include
#include
#define num 10000
#define swap1(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y);
#define swap2(x,y) (x)=(x)^(y);(y)=(x)^(y);(x)=(x)^(y);
void maopao1(void);
void maopao2(void);
void maopao3(void);
void maopao4(void);
void maopao5(void);
void maopao6(void);
int a[num];
int main()}}}
void maopao2(void)
} } } void maopao4(void) } } } void maopao6(void) { int i = 0, j = 0; int temp = 0; for(i=0;i<(num-1);i++){ for(j=i+1;j
執行結果:
the time of one is 2902
the time of second is 4571
the time of second is 3619
可以發現,方法一的時間開銷是最小的,方法三次之,方法二是最大的。
綜合上述可以發現:
如果單純地考慮時間開銷,方法一是最合適的;
如果單純地考慮空間開銷,方法二和方法三均優於方法一;
如果綜合地考慮時間和空間這兩者的開銷,方法三是最優的。
C 面試題 三種數值交換方法
要求 將數a b的值進行交換,並且不使用任何中間變數。includevoid swapvalue1 int a,int b 使用中間變數交換資料 void swapvalue2 int a,int b 使用加減運算完成資料交換 void swapvalue3 int a,int b 使用位運算交換資...
三種關係型資料的比較
先來看看它們三個的流行趨勢 mysql和oracle是一種使用sql語言並由oracle維護的資料庫軟體。microsoft sql server也是一種使用sql語言並由microsoft維護的資料庫工具。oracle最早發行,緊接著是sql server和mysql。作為廣泛使用的關聯式資料庫管...
Mysql常用的三種資料庫引擎比較
innodb 支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高 比如銀行 要求實現併發控制 比如售票 那選擇innodb有很大的優勢。如果需要頻繁的更新 刪除操作的資料庫,也可以選擇innodb,因為支援事務的提交 commit 和回滾 rollback 因為i...