是否有可能减少数组交换中的赋值操作的数量?



这个方法有一个非常简单的行为,如您所见。然而,我想知道是否有一种方法可以进一步简化这段代码,因为它只是为了从数组中交换值而进行赋值操作。

private Board exch(Board a, int i, int j) { // exchange two elements in the array
int temp = a.board[i];
a.board[j] = a.board[i];
a.board[i] = temp;
return a;
}

算法上没有更好的方法,但如果你只是想节省代码行,你总是可以这样做:

​import java.util.Collections
//define your array
Collections.swap(arr, i, j);

在此arr之后的值将被交换

在这种使用int的特殊情况下,有一种不使用临时变量的方法,即使用数学表达式,但我不建议这样做,因为这会使代码可读性降低。

private Board exch(Board a, int i, int j) {
a.board[i] = a.board[i] + a.board[j];
a.board[j] = a.board[i] - a.board[j];
a.board[i] = a.board[i] - a.board[j];
return a;
}

无论如何,像你这样做交换是很常见的,所以我不确定你为什么希望进一步简化