三種數值型資料交換的比較

2021-08-06 03:18:41 字數 1277 閱讀 2176

本文主要介紹三種數值型資料交換方法間的比較:

比如要交換的資料分別為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...