如您所見,此方法具有非常簡單的行為。但是,我想知道是否有辦法進一步簡化此代碼,因為它只是執行賦值操作以交換陣列中的值。
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;
}
uj5u.com熱心網友回復:
在您使用整數的這種特殊情況下,有一種方法可以在不使用臨時變數的情況下通過使用數學運算式來做到這一點,但我不會推薦它,因為它會降低代碼的可讀性。
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;
}
無論如何,以您的方式進行交換是很常見的,所以我不確定您為什么希望進一步簡化
uj5u.com熱心網友回復:
從演算法上講,沒有更好的方法,但如果您只是想節省代碼行,您可以隨時執行以下操作:
?import java.util.Collections
//define your array
Collections.swap(arr, i, j);
在此 arr 將交換值之后
uj5u.com熱心網友回復:
// 交換陣列中的兩個元素 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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330946.html
