如果說解決「交換兩個變數的值」的問題也是演算法的話,這大概是程式世界中最簡單的演算法了。即使是這樣的演算法,也有幾種解決方法,下面來了解一下吧。
1. 利用中間變數temp作為臨時變數交換數值,這是變數交換最簡單最通用的方法。
說這個演算法通用,是指其對資料型別沒有特殊要求,八種基本型別byte, short, int, long, float, double, char, boolean都可以。
2. 可以用兩個數求和然後相減的方式進行資料交換。
這個演算法的弊端在於如果 x 和 y 的數值過大的話,超出 int 的值就會損失精度。
對於浮點型float和double,會因ieee 754產生精度的問題。
對於boolean型別,加減號沒定義所以也是不能用的。
3. 利用位運算的方式進行資料的交換,其原理是:乙個數異或同乙個數兩次,結果還是原來那個數。
該演算法的優勢在於形式上比較好記,三個賦值語句的右邊都是x^y;此外,異或運算最大的好處是直接進行二進位制資料操作,轉換的時間效率上還是比較高的。
這個演算法不會有上面的加減演算法損失精度的問題,但只對整型和boolean型有效,對於浮點型float和double,是沒有不支援異或運算的。
總結一下,實現交換兩個變數的值的常用演算法有三種:利用中間變數、加減運算以及異或運算。
在實際軟體開發當中,第1種演算法,即利用中間變數的演算法簡單明瞭,不會產生歧義,而且適用面廣,便於程式設計師之間的交流。 一般情況下(炫技除外:)),碰到交換變數值的問題,都應採用此演算法,是一種標準演算法。
交換兩個變數的值(多種方法)
通常,在剛學習的階段,我們的做法是引入乙個新的變數,借助它來完成兩個變數的交換。就像把兩杯水交換一樣,要再買乙個杯子 才能完成交換。這種演算法易於理解,特別適合幫助初學者了解電腦程式的特點,是賦值語句的經典應用。在實際軟體開發當中,此演算法簡單明瞭,不會產生歧義,便於程式設計師之間的交流,一般情況下...
兩個變數的值交換的多種方法
一文中談到過將兩個變數的值進行交換的 swap 函式實現,它們分別是通過指標和引用並使用中間變數來實現的,這裡再把 貼一下。void swap int x,int y void swap int x,int y 當然上面兩種方法是很好也是很好理解很容易想到的方法,下面再介紹兩種不需要使用中間變數的方...
交換兩個變數的值的若干種方法
通常我們的做法是 尤其是在學習階段 定義乙個新的變數,借助它完成交換。如下 int a,b a 10 b 15 int t t a a b b t 這種演算法易於理解,特別適合幫助初學者了解電腦程式的特點,是賦值語句的經典應用。在實際軟體開發當中,此演算法簡單明瞭,不會產生歧義,便於程式設計師之間的...