總結(jié).png
方式一,最常見的交換方式
實(shí)現(xiàn)
public static void swap2(Object[] myArray,int a,int b){
Object temp=myArray[a];
myArray[a]=myArray[b];
myArray[b]=temp;
}
第一種方式是最常用的方式预柒,新建一個變量來進(jìn)行交換
方式二耸序,相對更加省內(nèi)存的交換方式
優(yōu)化起因
我們能不能不用第三個變量,就兩個變量進(jìn)行交換
實(shí)現(xiàn)
public static void swap1(int[] myArray, int a, int b) {
if (a!=b) {
myArray[a] = myArray[a] + myArray[b];
myArray[b] = myArray[a] - myArray[b];
myArray[a] = myArray[a] - myArray[b];
}
}
第二種方式檀头,采用了加減的方法
思路過程:a=a+b->b=a+b-b;a=a+b-b
優(yōu)點(diǎn)
更加的節(jié)省內(nèi)存
缺點(diǎn)
- a+b的時候容易產(chǎn)生溢出
- 很難運(yùn)用到不是數(shù)字的其他類中
方式三轰异,整數(shù)型數(shù)據(jù)最佳的交換方式
實(shí)現(xiàn)
public static void swap3(int[] myArray,int a,int b){
if (a!=b) {
myArray[a] = myArray[a] ^ myArray[b];
myArray[b] = myArray[a] ^ myArray[b];
myArray[a] = myArray[a] ^ myArray[b];
}
}
原因
- 計(jì)算機(jī)的處理二進(jìn)制運(yùn)算符相對比較快
優(yōu)點(diǎn)
運(yùn)行效率相對于方式2更佳
缺點(diǎn)
- 只能用在整型