我试图通过调用函数extractMin(A)从我的数组中提取最小元素,其中A是我要从中提取的数组
public int extractMin(int[][] A) {
if(A[0][0] != 1000) {
int min = A[0][0];
A[0][0] = 1000;
youngify(A,0,0);
return min;
}
return 1000;
}
此函数然后调用youngify(A,0,0)对函数进行排序
public boolean youngify(int[][] A, int i, int j) {
if(i < A[0].length-1 && j < A.length-1) {
if(A[i+1][j] != 1000 && A[i][j+1] != 1000) {
if(j >= A.length - 1 || A[i+1][j] <= A[i][j+1]) {
int temp = A[i][j];
A[i][j] = A[i+1][j];
A[i+1][j] = temp;
youngify(A,i+1,j);
return true;
}
if(i == A[0].length - 1 || A[i][j+1] <= A[i+1][j]) {
int temp = A[i][j];
A[i][j] = A[i][j+1];
A[i][j+1] = temp;
youngify(A,i,j+1);
return true;
}
}
}
return false;
}
在我的数组中,1000充当空值。 举一个示例数组:
[2, 3, 5, 14]
[4, 8, 9, 16]
[12, 1000, 1000, 1000]
[1000, 1000, 1000, 1000]
如果您执行以下操作:
while(sortedArray[0][0] != 1000) {
sortedList.add(extractMin(sortedArray));
}
System.out.println(sortedList);
它应该打印一个排序列表:2,3,4,5,8,0,12,14,16 由于某种原因,我得到的是:2,3,4,5然后停止,非常感谢任何帮助。