[英]segmenting a two-dimensional array (JAVA)
給定一個數組Array [n] [n](其大小n為2的冪),我想遞歸處理該數組的象限。 如何獲取包含[0到(size / 2)] [0到(size / 2)]元素的數組片段? 我記得在python中,您可以使用[0:size / 2]之類的索引拼接,JAVA是否具有類似的方式來處理這些元素?
恐怕您不能完全做到這一點。
如果您只需要一維數組,則可以使用1 :
Arrays.copyOfRange(T[] original, int from, int to)
這很冗長,但與Python中的切片基本相同。
但是,由於您需要一個二維數組(在Java中以數組形式實現 ),因此需要這樣的代碼:
class QArray {
private Integer[][] array;
private int quadrantSize;
public QArray(Integer[][] array) {
this.array = array;
this.quadrantSize = array.length / 2;
}
public QArray getQuadrant(int quadrant) {
QArray quadrantArray;
switch(quadrant) {
case 1:
quadrantArray = getQuadrant(0, quadrantSize);
break;
case 2:
quadrantArray = getQuadrant(0, 0);
break;
case 3:
quadrantArray = getQuadrant(quadrantSize, 0);
break;
case 4:
quadrantArray = getQuadrant(quadrantSize, quadrantSize);
break;
default:
throw new IllegalArgumentException("Invalid quadrant: " + quadrant);
}
return quadrantArray;
}
private QArray getQuadrant(int startRow, int startCol) {
Integer[][] quadrantArray = new Integer[quadrantSize][];
for (int r = 0; r < quadrantSize; r++) {
quadrantArray[r] = Arrays.copyOfRange(array[startRow + r], startCol, startCol + quadrantSize);
}
return new QArray(quadrantArray);
}
}
哪里:
System.out.println(qArray);
System.out.println(qArray.getQuadrant(2));
System.out.println(qArray.getQuadrant(1));
System.out.println(qArray.getQuadrant(3));
System.out.println(qArray.getQuadrant(4));
對於一些qArray
會給你:
[ 1, 2, 3, 4]
[ 5, 6, 7, 8]
[ 9, 10, 11, 12]
[13, 14, 15, 16]
[ 1, 2]
[ 5, 6]
[ 3, 4]
[ 7, 8]
[ 9, 10]
[13, 14]
[11, 12]
[15, 16]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.