两数交换的四种方法

1.水杯交换

public static void main(String[] args){

    //倒水思想换位:A,B两杯饮料如何交换到对方杯中。假设再拿一个空杯子C,先将A杯中的饮料倒入C杯中,然后将B杯倒入A杯中(此时A饮料已倒出为空杯),然后再将C杯中的原有A杯饮料倒入B杯中,这样就完成了两杯饮料的交换。
    //注意单独写方法时的值传递和引用传递,交换代码如下:

    int a = 10, b = 12;
    System.out.println("交换前a为:"+a+",b为:"+b);
    int c = a;
    a = b;
    b = c; 
    System.out.println("交换后a为:"+a+",b为:"+b);    

}


2.位运算(^)异交换

public static void main(String[] args){

    //使用位运算异(^),注意:只适合整数交换.  思想:一个数异自己得零,异零得自己。算法解析如乘法可以交换位置化简。
    //代码如下:

    int a=11, b=1;
    System.out.println("交换前a为:"+a+",b为:"+b);
    a=a^b;      //a=a^b;
    b=a^b;      //b=a^b^b=a^(b^b)=a^0=a,结果为:b=a;
    a=a^b;      //a=a^b^a=b^(a^a)=b^0=b,结果为:a=b;
    System.out.println("交换后a为:"+a+",b为:"+b);


}

3.加减交换

public static void main(String[] args){
   
    int a=11,b=22;
    System.out.println("交换前a为:"+a+",b为:"+b);
    a=a+b;
    b=a-b;
    a=a-b;
    System.out.println("交换后a为:"+a+",b为:"+b);
    
}

4.赋值交换

public static void main(String[] args){
    
    int a=11,b=22;
    System.out.println("交换前a为:"+a+",b为:"+b);   
    a = b + (b = a) * 0; //此时b+(b=a)*0时,其中(b=a),b已经等于a的值了.且这里的b+(b=a)*0,b+的b值为原来的b值22.
    System.out.println("交换后a为:"+a+",b为:"+b);
    
}

交换时间效率总结***


//  水杯交换<加减交换<赋值交换<异运算交换

各交换方法的耗时详情参考

posted @   lnspirational  阅读(493)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示