このコードがArrayIndexOutOfBoundsExceptionをなぜ与えているのか理解できませんでした。ここでは は双方向バブルソートを実装するコードです。なぜ双方向バブルソートのArrayIndexOutOFBoundExceptionですか?
static void bubble(int[] a){
int temp;
for(int i=a.length-1,k=0;i!=k;i--,k++){
for(int j=k;j<i;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(int j=i-1;j>k;j--){
if(a[j-1]>a[j]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
IDEに組み込まれているデバッガのコードをステップ実行します。 'i'、' k'、 'j'を監視します。特に、' a'にアクセスするために使用されます(そして、あなたが時々使用している '+ 1'と' -1'を許可します)。あなたはバグを見つけるでしょう。 –
@Shreya IDEを使用してブレークポイントを挿入し、コードの進捗状況を監視してみてください。存在しない索引にアクセスするシナリオを見ることができるはずです。 – kkaosninja
コードをデバッグします。しかし、私が見るように、 'a.length'が偶数であれば' i'は不均一ですが 'k'は偶数であるので、' i == k'という状況は決して受けられません。 –