Java:提取2D数组中的最小元素,并对数组进行排序

时间:2017-09-29 21:08:29

标签: java arrays algorithm sorting clrs

我试图通过调用函数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然后停止,非常感谢任何帮助。

0 个答案:

没有答案