借助第三方变量
//借助temp变量
public static void swap(int arr[],int i,int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
数学表达式
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] + arr[j];
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];
}
异或运算
//异或运算-位运算效率高
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j]; //arr[j] = (arr[i] ^ arr[j]) ^ arr[j] = arr[i]
arr[i] = arr[i] ^ arr[j]; //arr[i] = (arr[i] ^ arr[j]) ^ arr[i] = arr[j]
}
三种方法推荐:异或运算 Ps: 随机快排时,用 异或运算 交换变量会异常(暂时没有解决)……
(数学理论:一个数异或同一个数两次,结果还是那个数)