C 原地交換兩個變數的值
第一種方法,大家會藉助第三個變數來實現:
如:tmp=A;A=B;B=tmp;
這種方法需要藉助第三變數來實現;
第二種方法是利用加減法實現兩個變數的交換:
如:A=A+B;B=A-B;A=A-B;
但是 如果 A+B 超出 A的範圍 ,會引起溢位。
第三種方法是得用位異或運算來實現,也是效率最高的一種,在大量資料交換的時候,效率明顯優於前兩種方法:
如:A=A^B;B=A^B;A=A^B;
原理:利用一個數異或本身等於0和異或運算符合交換率。
異或的意思就是:不同 才可以得1,否則為0
// 異或
// 0^0=0
// 1^1=0
// 1^0=1
// 0^1=1
#include<stdio.h> int swap(int a,int b){ a = a^b; printf("%d\n",a); b = a^b; printf("%d\n",b); a = a^b; printf("%d\n",a); } int main(){ int a = 2; int b = 4; swap(a,b); }
相關推薦
原地交換兩個變數值
原地交換兩個變數值 原地交換兩個變數值 原地交換兩個變數值 如何將a、b兩個變數的值進行交換 可以通過相加來實現: int a=3,b=4; a=a+b; b=a-b; a=a=b; 另外,可以用異或來實現:
【C語言】兩個變數值的交換——指標
C語言中交換兩個變數的值可以在主函式中直接實現,也可以通過子函式來實現。下面我們介紹用子函式實現的情況。 1.將兩個變數的值作為實參直接傳遞,在子函式內部定義一個普通變數來對兩個形參進行交換,並分別在子函式和主函式中列印。#include <stdio.
關於交換兩個變數值的三種方法
1,臨時變數法: temp=A; A=B; B=temp; 2,求差法: A=A-B; B=A+B; //B=A-B+B=A A=B-A; //A=A-A+B 3,異或法: A=A^B; B=A^B; //B=A^B^B=A A=A^B; //A=A^B^A=B 第一種方法最
C 原地交換兩個變數的值
第一種方法,大家會藉助第三個變數來實現: 如:tmp=A;A=B;B=tmp; 這種方法需要藉助第三變數來實現; 第二種方法是利用加減法實現兩個變數的交換: 如:A=A+B;B=A-B;A=A-B; 但是 如果 A+B 超出 A的範圍 ,會引起溢位。 第三種方法是
C語言交換兩個變數數值的幾種方法
因為經常見到這類題目,就自己總結了以下幾種辦法 1. 建立中間變數 這是最快也是最簡單的辦法,例如: #include<stdio.h> int main() { int a=10; int b=20; i
C語言 交換兩個變數數值多種方法
在我們學習程式設計過程中一定編寫過交換兩個變數數值方法,這裡我也蒐集網路一些方法平臺:ubuntu10 gcc編譯器下面再寫下交換兩個變數值的方法: #include <stdio.h> //第一種不講了,太簡單了,大部分都會想到,看著很LoW,所以接著往下看
面試官在“逗”你係列:不借助第三變數交換兩個變數值的方案你有幾種?
引言 在我們學習程式設計之初,就學習過變數的賦值操作,同時也學習了將一個變數的值賦值給另外一個變數。對於交換兩個變數的值,很多童鞋都有解決方案。然鵝,對於面試官提出的不借助第三變數來交換兩個變數的值,你能想到幾種解決方案呢? 如果你只知道一種方案,請你認真看下去... 如果你知道兩種方案,那麼你可以來了解更
JavaSE7基礎 交換兩個變量的數值 巧妙的代碼
學習 程序 技術分享 註意 我會 思考 ase com 編輯器 jdk版本 :jdk-7u72-windows-i586系統 :Windows7編輯器 :Notepad++ v7.4.2註意事項 :博文內容僅供參考,不可用於其他用途。 代碼 clas
C語言:指針實現交換兩個變量的值
實現 urn sign ret 語言 div title void itl 用指針交換兩個變量的值(10分) 題目內容: 用指針交換兩個變量的值 主函數參考: int main( ) { int a,b; scanf("%d%d",&a,&b)
[日常練習] 4. 基於交換兩整形變數值的三種方法的C語言實現。
當面試題遇到:交換兩整形變數的值。你是感到無比的“慶幸”遇到這麼簡單的面試題,還是有一點“慌張”,怕是自己想的太簡單了吧!今天我們就來處理幾道小題,並且深入探討一下交換兩整形的3種C語言實現方法!當你再遇到這種問題的時候,你將一點都不慌!你,穩得一批! 練習題目: 1. 給定兩個整形
JavaScript不借助第三個變數交換a,b兩個變數值
交換變數值方案一 最最最簡單的辦法就是使用一個臨時變量了 不過使用臨時變數的方法實在是太low了 var t; t = a; a = b; b = t; 首先把a的值儲存到臨時變數中 然後b賦值給a 最後拿出臨時變數中的a值賦給b 這個辦法是最
關於Java 呼叫函式進行兩個變數值的交換
交換兩個變數的值,如果是基礎型別比如int, 直接進行交換: int aToSwap = 1; int bToSwap = 2; 一個經典的問題就是如果我有一個swap 方法如下,試問在主函式裡呼叫了這個swap 方法以後 ,從主函式裡傳入的兩個變數值交換了沒有? publ
【編程題】不引入第三個變量,而交換兩個變量的值
其中 blog b+ 沒有 來源 article else 位移 text 不引入第三個變量,而交換兩個變量的值 方法一:算術運算 1 int a,b; 2 a=10;b=12; 3 a=b-a; //a=2;b=12 4 b=b-a; //a=2;b=10
python中交換兩個變量值的方法
兩個 交換 print pri python post 方法 變量 class a = 4b = 5 #第1種c = 0c = aa = bb = c #第2種a = a+bb = a-ba = a-b #第3種a,b = b,a print("a=%d,b=%d"%(a,
交換兩個變量的值,不借助第三個變量的 三種方法(JS實現)
clas img 進行 blog 算法 並且 pos 成交 方法 第一種:算術運算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a、b看做數軸上的點,圍繞兩點間的距離來進行計算。
不使用第三個變量交換兩個變量的值
pan AS color clas pre class spa 交換 div 1 i = i + j; 2 j = i - j; 3 i = i - j; 1 i = i * j; 2 j = i / j; 3 i = i / j; 1 i = i ^ j; 2
不借助第三個變量,交換兩個變量值的3種方式
int nat AS pri sdn 我們 感謝 方法 span 今天在我們學校的OJ上做題,一道非常簡單的題,突然想試試能不能不借助第三個變量,交換兩個變量值。蒙出來一半了已經,好可惜。現在把方法寫在這裏,希望以後不要忘記。 1 void fun1() 2 {
交換兩個變量的內容
col 變量 div studio print span \n main spa 1 #include<studio.h> 2 int main() 3 { 4 int a=5; 5 int b=6; 6 printf("a
Java不借助第三方變量交換兩個變量的值
style system int ava pan 運算符 ring out java 這種方式有個隱患,如果兩個數相加超過了類型的上限,會影響精度,導致結果不準確; public class Test { public static void main(Stri
Python交換兩個變量值的函數
nbsp 方法 pytho fun return code turn ret int 方法1:(錯誤) def func(a,b): a,b = b,a a = 1 b = 2 func(a,b) print(a," ",b) 方法2:(正確) def