首页 > 技术文章 > 两数交换

jianxie 2014-03-10 11:03 原文

两数交换算法

public class Demo {

    private static long n = 1000000000;
    /**
     * @param args
     */
    public static void main(String[] args) {    
        int a=10,b=20;
        long begin = System.currentTimeMillis();
        swap1(a, b);
        long end = System.currentTimeMillis();
        System.out.println(end - begin);
        
        begin = System.currentTimeMillis();
        swap2(a, b);
        end = System.currentTimeMillis();
        System.out.println(end - begin);
        
        begin = System.currentTimeMillis();
        swap3(a, b);
        end = System.currentTimeMillis();
        System.out.println(end - begin);
    }

    /**
     * 
     * @param a
     * @param b
     */
    public static void swap1(int a, int b){
        for(long i = 0; i < n; i++){
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
        }                    
    }
    
    public static void swap2(int a, int b){
        int temp;
        for(long i = 0; i < n; i++){
            temp = a;
            a = b;
            b = temp;
        }
    }
    
    /**
     * 两个数过大,会溢出
     * @param a
     * @param b
     */
    public static void swap3(int a, int b){
        for(long i = 0; i < n; i++){
            a = a + b;
            b = a - b;
            a = a - b;
        }
    }
}
View Code

 

推荐阅读