轉自: https://blog.csdn.net/weixin_42581560/article/details/81121503
轉載出處:學習筆記
1.中間值交換
- int a=1,b=2;
- int c;//把c作爲中間值交換
- //交換a,b的值
- c=a;
- a=b;
- b=c;
這個算法相當於交換ab兩杯水,然後拿出一個空杯子c,先讓c裝滿a的水,然後將b的水倒入a裏面,這樣a就裝了b的水。最後把c的水倒入b中。
2.相減交換
- int a=100,b=200
- a=a+b;//將ab的值放進a裏面a=100+200
- b=a-b;//然後a減去b的值,剩下a原來的值,所以a的值就賦給100 b=100+200-200
- a=a-b;//最後a減去b(b現在裝的是a原來的值)的值,剩下的就是b原來的值 a=100+200-100
這個交換算法與上一個想比,節省了空間,但是有一個弊端,那就是a+b不能超出int的範圍。
3.異或算法交換值
- int a=100,b=200;
- a=a^b;
- b=a^b;
- a=a^b;
異或,就是相同出0,不同出1,1+1=0,1+0=1
這個算法的好處是不用擔心超出範圍,也節省了空間,缺點是隻能對整形值和char型進行交換,浮點型的不能。