有苦有乐的算法 --- 两个元素交换的三种方式

方式一

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];
}

缺点:自身异或自身等于0,在部分场景使用可能出现问题

方式二

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];
}

缺点:arr[i] + arr[j] 可能超最大范围

posted @ 2022-03-07 18:03  叕叕666  阅读(51)  评论(0)    收藏  举报