2017-11-10 12 views
0

私はコーディングに新しく、誰かが私にとってこれについていくつかの光を当てることを望んでいます。私はforループがどのように動作するかを理解しています(私は思います)。 私の質問はこのIf文についてです。私はちょうどIfステートメント内の条件で混乱しています。 someNums [b + 1]がsomeNums [b]より常に1以上の場合、条件someNums [b]> someNums [b + 1]は真と評価されますか?forループ内のif文に混乱しています

ちょっと迷っていますので、どんな助けでも大歓迎です!また、このコードはバブルソートに関連しています。

for(b = 0; b < someNums.length - 1 ; ++b) 
{ 
    if(someNums[b] > someNums[b + 1]) 
    { 
    temp = someNums[b]; 
    someNums[b] = someNums[b + 1]; 
    someNums[b + 1] = temp; 
    } 
} 
+0

'someNums [B]'と 'someNums [B + 1]'の両方:

すべての引き出しがsomeNums[b]someNums[b+1]を比較し、そうで... 何かを持っている、あなたは、隣接する2つの引き出しの内部に物事をチェックしています2つの異なる数字を表し、bおよびb + 1は、これらの数値が記憶されているメモリに対するちょうどオフセットであり、「if」条件評価に影響を与えない。 – Suparshva

答えて

0

someNums多分[5,4,3,2,1]のような配列と何でありますsomeNums [0]> someNums [1]の場合、両方の数値を入れ替えている場合は、インデックス0と1の数値を比較することをお勧めします。 someNums [0]とsomeNums [1]より小さい値を混同しないでください。実際に配列内の値の位置について説明します。

+0

ああ、私はちょうどユーレカの瞬間を持っていた。角括弧の中で、配列の位置を参照するのではなく、値ではないことは忘れていましたか? – TigerWoods

+0

うん、まさに.. – Asim

0

someNums[b+1]someNums[b]より1大きくありません。インデックスが1より大きいが、(例えば) someNums = [1,2,3,1], b = 2の場合に、someNums[b] 3とsomeNums[b+1]あり、ここで1

0

someNumsが配列であると仮定します。その場合 、[]内の文字は、前記アレイのn番目の要素を指します。 例:

int someNumbs[4] = {3, 8, 5, 1}; 

printf("%d", someNumbs[2]); 
printf("\n\n--------"); 

return 0; 

「5」と表示されます。あなたが見ることができるように、後者はより大きなインデックスを有するが 、第三の要素の値は、4よりも大きくなっています。

0

あなたは、あなたが引き出しを持っている引き出しの胸を、言わせて、受信者としてsomeNumsで考える必要があります。

すべての引き出しはインデックスによって呼び出されますが、1ではなく0から始まります(someNums[2]3番目の引き出しです)。

関連する問題