int main(void)
{
int a[5] = {36,24,10,6,12};
int pass;
int i;
int hold;
/* bubble sort */
/* loop to control number of passes */
for(pass=1; pass<5; pass++){
/* loop to control number of comparisons per pass */
for(i=0; i<5; i++){
if(a[i] > a[i+1]){
hold = a[i];
a[i] = a[i+1];
a[i+1] = hold;
}
}
}
return 0;
}
このバブルソートプログラムでは、隣接する要素の値を比較するif文があります。 カウンターIが4になると、[4]> a [4 + 1]の場合のステートメントは、配列に[5]要素がないので、プログラムがどのように比較し作業しているのでしょうか?バブルソートCの間違ったコード! [Deitel C 6th Ed]
私は理解できません(パス= 1;パス< 5;パス++)。このループは何のために働くのですか?なぜループが1から始まり、5ではなく4回連続するのですか。
誰もこのバブルソートプログラムがどのように機能しているかを実証してください。乾杯!
コードが間違っていて、配列の外側にアクセスしています。 – Barmar
あなたが持っているコードは*動作しません。それは配列が範囲外にインデックスを付けるので、*未定義の動作*を持っています。 –
私はdeitelの本から見つけました!どのように間違っていることができますか? C Dietelによってプログラムする方法第6版 – Sairat