JAVA异或交换数组元素返回0的坑

    技术2022-07-11  103

    使用异或交换数组中的两个元素,当i = j时,交换之后inputs[i] = input[j] = 0。这是因为

    第一步inputs[i] = inputs[i] ^ inputs[j],因为inputs[i] = inputs[j],所以inputs[i] = 0。因为i=j,所以同时inputs[j] = inputs[i] = 0,所以最后结果都为0; inputs[i] = inputs[i] ^ inputs[j]; inputs[j] = inputs[i] ^ inputs[j]; inputs[i] = inputs[i] ^ inputs[j];

    如果想得到正确结果,在交换之前应判断 i是否和 j相等。

    if(i != j){ //交换 inputs[i] = inputs[i] ^ inputs[j]; inputs[j] = inputs[i] ^ inputs[j]; inputs[i] = inputs[i] ^ inputs[j]; }
    Processed: 0.010, SQL: 9