だが、私はこのようになります2次元配列(G)を持っているとしましょう:2d配列で行が空であるかどうかをチェックする方法。
0 0 0 0 0 12 13 0
0 0 6 0 0 0 0 3
0 6 0 4 0 0 0 5
0 0 4 0 10 0 0 7
0 0 0 10 0 11 8 9
12 0 0 0 11 0 1 0
13 0 0 0 8 1 0 2
0 3 5 7 9 0 2 0
私はこのような配列を横断し、ゼロではない最小値を見つける必要があります。私は最小値を見つけた後、空であるがGと同じサイズのHと呼ばれる別の2次元配列にそれを加えます。一度HIに値を追加し、Gの値をゼロに設定して、 2番目に小さい値、3番目の値、4番目の値などです。私はHのすべての単一の行に値が入っているときに配列を走査しません。だから私は、私はこのようにHに追加して1が最低値であることを見つけるだろう私の最初のパスで上記の配列のために:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
ここで私はJavaで書いたものです:
だから、int numVerts = G.length;
int [][] H = new int[numVerts][numVerts];
while (/*there exists an empty row in H*/){
for (int i = 0; i < numVerts; i++){
for (int j = 0; j < numVerts; j++){
if ((G[i][j] != 0) && (G[i][j] < minWeight)){
minWeight = G[i][j];
k = i;
l = j;
}
}
}
H[k][l] = minWeight;
H[l][k] = minWeight;
G[k][l] = 0;
G[l][k] = 0;
}
私はこの問題を私が望む方法で解決することができます、そして、それは私がそれを解決する方法です。だから私が把握しなければならないことは、Hを横切って横断することなく、H内のすべての行に少なくとも1つの値があるかどうかをどのようにして伝えるかということです。
*空ではあるがG *と同じサイズです:これは矛盾します。定義上、空の配列のサイズは0です。HはGと同じ幅と高さを持ちますが、0で埋められます。次元が巨大でない限り、Hをトラバースするのではなく、時期尚早の最適化です。しかし、あなたは012で埋められた一連の行を含むSetを使うことができます。 0以外の数値を行に追加するたびに、行から行を削除します。セットが空のときは、完了です。 –