交換小算法

轉自: https://blog.csdn.net/weixin_42581560/article/details/81121503
轉載出處:學習筆記

1.中間值交換

  1. int a=1,b=2;
  2. int c;//把c作爲中間值交換
  3. //交換a,b的值
  4. c=a;
  5. a=b;
  6. b=c;

這個算法相當於交換ab兩杯水,然後拿出一個空杯子c,先讓c裝滿a的水,然後將b的水倒入a裏面,這樣a就裝了b的水。最後把c的水倒入b中。

2.相減交換

  1. int a=100,b=200
  2. a=a+b;//將ab的值放進a裏面a=100+200
  3. b=a-b;//然後a減去b的值,剩下a原來的值,所以a的值就賦給100 b=100+200-200
  4. a=a-b;//最後a減去b(b現在裝的是a原來的值)的值,剩下的就是b原來的值 a=100+200-100

這個交換算法與上一個想比,節省了空間,但是有一個弊端,那就是a+b不能超出int的範圍。

3.異或算法交換值

  1. int a=100,b=200;
  2. a=a^b;
  3. b=a^b;
  4. a=a^b;

異或,就是相同出0,不同出1,1+1=0,1+0=1

這個算法的好處是不用擔心超出範圍,也節省了空間,缺點是隻能對整形值和char型進行交換,浮點型的不能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章