国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

【Java】不使用第三方變量交換兩個(gè)變量的值

2019-11-14 22:38:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java】不使用第三方變量交換兩個(gè)變量的值

在語(yǔ)言學(xué)習(xí)和進(jìn)行程序設(shè)計(jì)的時(shí)候,我們交換兩個(gè)變量最常使用的方法是借助temp這個(gè)新的變量進(jìn)行轉(zhuǎn)換,代碼如下:

-----------------------------------------

<--標(biāo)準(zhǔn)算法-->

-----------------------------------------

int a = 3, b = 4;

int temp = a;

a = b;

b = temp;

-----------------------------------------

這種方法易于理解,特別適合初學(xué)者了解計(jì)算機(jī)程序的特點(diǎn),是賦值語(yǔ)句的經(jīng)典應(yīng)用,在實(shí)際開(kāi)發(fā)中,此法簡(jiǎn)單明了,不會(huì)產(chǎn)生歧義,便于交流。

但是這個(gè)算法的弊端是需要借助第三方變量--臨時(shí)變量,效率不是很高。

-----------------------------------------

下面介紹不借助臨時(shí)變量怎么進(jìn)行轉(zhuǎn)換的方法

1、算術(shù)算法

簡(jiǎn)單而言,就是普通的 + 和 - 的運(yùn)算來(lái)實(shí)現(xiàn),代碼如下:

-----------------------------------------

int a = 3, b = 4;

a = a+b;

b = a-b;

a = a-b;

-----------------------------------------

算術(shù)原理是:把a(bǔ)、b看做數(shù)軸上的點(diǎn),圍繞兩點(diǎn)間的距離來(lái)進(jìn)行計(jì)算。

具體過(guò)程:

第一句“a = a+b”求出ab兩點(diǎn)的距離之和,并且將其保存在a中;

第二句“b = a-b”求出a到原點(diǎn)的距離,并且將其保存在b中;

第三句“a = a-b”求出b到原點(diǎn)的距離,并且將其保存在a中。

完成交換。

此算法與標(biāo)準(zhǔn)算法相比,多了三個(gè)計(jì)算的過(guò)程,但是沒(méi)有借助臨時(shí)變量

2、異或算法

通過(guò)異或運(yùn)算也能實(shí)現(xiàn)變量的交換,這也許是最為神奇的,請(qǐng)看以下代碼:

-----------------------------------------

int a = 3, b = 4;

a = a^b;

b = a^b;

a = a^b;

-----------------------------------------

此算法能夠?qū)崿F(xiàn)是由異或運(yùn)算的特點(diǎn)決定的,通過(guò)異或運(yùn)算能夠使數(shù)據(jù)中的某些位翻轉(zhuǎn),其他位不變。這就意味著任意一個(gè)數(shù)與任意一個(gè)給定的值連續(xù)異或兩次,值不變。即:

a^b^b=a。將a=a^b代入b=a^b則得b=a^b^b=a;同理可以得到a=b^a^a=b;輕松完成交換。

異或運(yùn)算最大的好處是直接進(jìn)行二進(jìn)制數(shù)據(jù)操作,大大節(jié)約了轉(zhuǎn)換的時(shí)間效率。

-----------------------------------------

嘮叨兩句:

數(shù)學(xué)中的小技巧對(duì)程序設(shè)計(jì)而言具有相當(dāng)?shù)挠绊懥Γ\(yùn)用得當(dāng)會(huì)有意想不到的效果。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 曲沃县| 大庆市| 若羌县| 邳州市| 陈巴尔虎旗| 南靖县| 池州市| 长治县| 府谷县| 太保市| 华蓥市| 新泰市| 罗城| 安溪县| 河曲县| 东台市| 德惠市| 西安市| 竹北市| 临桂县| 平陆县| 浦县| 青州市| 长葛市| 墨竹工卡县| 都兰县| 临西县| 三门县| 通许县| 万安县| 乐平市| 浦江县| 临江市| 黄大仙区| 阿拉尔市| 盐边县| 聂拉木县| SHOW| 大余县| 南召县| 金山区|