私は整数配列を取ってBucket Sortを使ってソートする必要がある代入に取り組んでいます。Java 2d配列とバケットソート
私の問題は、すでに「バケット」にある要素が既に存在する場合にのみ、次の列に増やそうとするときです。
したがって、下の配列を使用すると、22が最初の要素であり、2行目の0行目に入りますが、それは正しいですが、iを列として使用すると明らかに正しくありません。範囲外のインデックス。
bucketArray列のインデックスを正しく増やす方法については、その位置に要素がある場合にのみ、私は頭をはたくことができません。私は、列を処理するための追加のループを使用してみましたが、どちらも動作しませんでした。
正しい方向へのポインタがあれば幸いです!私はバケットソートを作成する他の方法もあると確信していますが、割り当ては各バケットに2次元配列を使用すると言いましたので、そのように動作させようとしていました。
public class BucketSort {
public static void main(String args[]) {
int intArray[] = {22, 45, 12, 8, 10, 6, 72, 81, 33, 18, 50, 14};
int eachBucket[][] = new int[10][11];
int j;
double max = 81;
int min = 6;
int divider = (int)Math.ceil((max + 1)/10);
for(int i = 0; i < intArray.length; i++) {
j = (int)Math.floor(intArray[i]/divider);
eachBucket[j][i] = intArray[i];
}
}
}
これは問題ではありません。私はちょっと馬鹿だと感じていますが、実際にどのように実際に働いているのかは分かりません。最初の数字(22)を取ると、2行目(j)に移動しますが、columnButton [j] [10]は正確に何ですか?私はプログラミングの初心者であることを覚えておいてください。 – NoobCoderChick
ああ私は見る! eachBucket [j] [10] = 0なら、毎回1を追加します! Brilliant – NoobCoderChick
これはこのようなことをする良い方法ですか?この特定の状況に対して。また、行ごとの最大要素数が11であることが分かっている場合は、カウントを追跡するために追加の列を作成する必要がありますか?あなたはこれまでのような状況に対処しましたか、それともあなたの頭の上から出てきましたか?意味すると、私はそのような考え方をしていないか、プログラムを作成して経験を積んだら自分自身を蹴って、このような問題を解決することができますか? – NoobCoderChick