程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 經典算法學習——交換兩個整型數據

經典算法學習——交換兩個整型數據

編輯:關於PHP編程

經典算法學習——交換兩個整型數據


交換兩個數是在編程中經常會用到的,當然我們可以用很常見的方式來實現,也可以各種稀奇古怪的方法來做。這裡我們用三種比較常規的方式來做,太過古怪的方法個人覺得沒有太大必要。實例代碼上傳至:https://github.com/chenyufeng1991/SwapFunction

(1)使用指針

實現如下:

//
//  main.c
//  SwapFunc
//
//  Created by chenyufeng on 16/2/3.
//  Copyright © 2016年 chenyufengweb. All rights reserved.
//

#include 

void swap01(int *a,int *b);

int main(int argc, const char * argv[]) {

    int a = 1;
    int b = 2;
    printf("交換前:a = %d,b = %d\n",a,b);
    swap01(&a, &b);
    printf("交換後:a = %d,b = %d\n",a,b);

    return 0;
}

//最常規的交換;
void swap01(int *a,int *b){

    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
(2)不借用第三個數
//
//  main.c
//  SwapFunc
//
//  Created by chenyufeng on 16/2/3.
//  Copyright © 2016年 chenyufengweb. All rights reserved.
//

#include 

void swap02(int *a,int *b);

int main(int argc, const char * argv[]) {

    int a = 1;
    int b = 2;
    printf("交換前:a = %d,b = %d\n",a,b);
    swap02(&a, &b);
    printf("交換後:a = %d,b = %d\n",a,b);

    return 0;
}

//不用第三個數;
void swap02(int *a,int *b){

    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}

(3)異或

//
//  main.c
//  SwapFunc
//
//  Created by chenyufeng on 16/2/3.
//  Copyright © 2016年 chenyufengweb. All rights reserved.
//

#include 

/**
 *  由於我這裡用的是C語言,所以不能使用引用。C++中可以使用引用。
 引用的函數定義:
 void swap04(int &a,int &b){
 ...
 }
 */

void swap03(int *a,int *b);

int main(int argc, const char * argv[]) {

    int a = 1;
    int b = 2;
    printf("交換前:a = %d,b = %d\n",a,b);
    swap03(&a, &b);
    printf("交換後:a = %d,b = %d\n",a,b);

    return 0;
}

//異或,使用二進制位進行計算;
void swap03(int *a,int *b){

    *a = *a ^ *b;
    *b = *b ^ *a;
    *a = *a ^ *b;
}
上面三種實現大家應該是應該閉著眼睛都能寫出來的,也是能夠完全理解的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved