在数组的排序等,我们经常会用到将两个数位置进行交换,这里写一些将数交换的方法。
a = a + b ;//a是a和b的和
b = a - b ;//(a和b的和)减去b=原来a的值
a = a - b ;//(a和b的和)减去原来a的值
弊端:较大的两个数的和会造成数据溢出
----------------------------------------------------------------------------------------------------------------
a = a^b;
b = a^b;
a = a^b;
异或两次,得到原来的引用。
弊端:只适用于整数
----------------------------------------------------------------------------------------------------------------
max =Math.max(arr[i], max);
min =Math.min(arr[i], min);
java中Math类 提供的方法,参数范围:double、float、int、long,虽然不支持short,但是short可以进行类型转换,进行数据类型提升。
short arr[] ={3,4,5,0,1,8,9,2,6,7};
int max = arr[0];
for (int i = 1; i < arr.length; i++)
max =Math.max(arr[i], max);
----------------------------------------------------------------------------------------------------------------
以下的方法基本没有弊端,而且都没有用第三方变量开辟新的内存空间。
a = a - b ; //a是a和b的差值
b = b + a ;//b加上(a和b的差值)
a = b - a ;//a减去(a和b的差值)
----------------------------------------------------------------------------------------------------------------
三目运算:
max = ( arr[i] > max) ? arr[i]:max;
min = ( arr[i] < min ) ? arr[i]:min;
----------------------------------------------------------------------------------------------------------------
最常用的是这个:
int temp = a;
a = b ;
b = temp ;
----------------------------------------------------------------------------------------------------------------
还要说一点的就是,Math.max、Math.min源码里用的还是三目运算。