您的位置:首页 > 其它

两个变量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)

注: 上述方法在执行多次后,第二种方法效率会高一些,在只执行一次或者少次的情况下第一,三两种方法反而效率高一些。所以第一种方法在少量运算的情况下,比较好。在多次的时候第二种比较好。

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: