两个变量a,b 交换其数值的三种方法
2014-01-02 18:48
483 查看
1, c=a; a=b; b=c;
2,
n = n + m;//如果n和m的值非常大,容易超出int范围。
m = n - m;
n = n - m;
3,
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
注: 上述方法在执行多次后,第二种方法效率会高一些,在只执行一次或者少次的情况下第一,三两种方法反而效率高一些。所以第一种方法在少量运算的情况下,比较好。在多次的时候第二种比较好。
2,
n = n + m;//如果n和m的值非常大,容易超出int范围。
m = n - m;
n = n - m;
3,
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
注: 上述方法在执行多次后,第二种方法效率会高一些,在只执行一次或者少次的情况下第一,三两种方法反而效率高一些。所以第一种方法在少量运算的情况下,比较好。在多次的时候第二种比较好。
import java.util.Random; public class Day042 { public static void main(String[] args) { } static void testEfficiency1() { long l1 = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { Random r = new Random(System.currentTimeMillis()); int[] arr = new int[2]; arr[0] = (int) (Math.random() * 100); arr[1] = (int) (Math.random() * 100); // System.out.println(Arrays.toString(arr)); arr[0] = arr[0] ^ arr[1]; arr[1] = arr[0] ^ arr[1]; arr[0] = arr[0] ^ arr[1]; } long l2 = System.currentTimeMillis(); System.out.println(l2 - l1); } static void testEfficiency2() { long l1 = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { Random r = new Random(System.currentTimeMillis()); int[] arr = new int[2]; arr[0] = (int) (Math.random() * 100); arr[1] = (int) (Math.random() * 100); // System.out.println(Arrays.toString(arr)); int t = arr[0]; arr[0] = arr[1]; arr[1] = t; } long l2 = System.currentTimeMillis(); System.out.println(l2 - l1); } static void testEfficiency3() { long l1 = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { Random r = new Random(System.currentTimeMillis()); int[] arr = new int[2]; arr[0] = (int) (Math.random() * 100); arr[1] = (int) (Math.random() * 100); // System.out.println(Arrays.toString(arr)); arr[0] = arr[0] + arr[1]; arr[1] = arr[0] - arr[1]; arr[0] = arr[0] - arr[1]; } long l2 = System.currentTimeMillis(); System.out.println(l2 - l1); } }
相关文章推荐
- 黑马程序员 使用工厂模式实现dao层(李勇老师)
- poj50题
- UVa 10905 - Children's Game(求多个正整数排列后,所得的新的数字的极值)
- RelativeLayout用到的一些重要的属性(转)
- Jenkins实战演练之Linux服务器快速搭建
- win7搭建ghost开发所需环境
- Android 技巧 - listview 里面的图片不能响应onClick事件?
- .数据库、表的建立,记录的添加、查询、修改和删除
- linux tips
- CentOS 6.4下编译安装MySQL 5.6.14
- 指针函数与函数指针
- CentOS 6.4下编译安装MySQL 5.6.14
- java中的interface
- JVM参数设置
- Java中printf的使用举例
- linux arp 攻击源码分析
- NDK 下第一个boost asio 网络程序测试成功
- Oracle + plsql 可以执行的一条 while 循环语句
- 三種批量存儲數據的方法
- 维生素E4