- 470 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:39:53 ]
- 基数ソートの勉強をしています。
16ビット長の値(unsigned short)を4ビットずつ分割して、その分布を調べて ソートする、というアルゴリズムらしいのですが、ちょっとわからない点があります。 2^4 = 16 ですから、分布を数えるために使う配列は int count[16] と宣言しました。 16ビット長の値を4ビットずつ分割して(分割された値を A とします)、その分布を調べるわけですが、 教科書にあるコードは count[A & 0x0f]++; となっています。 ここで、A & 0x0f するのはどうしてでしょうか? A は4ビット長なわけですから、大きさ16の配列 count に収まるはずです。 なぜ、わざわざ 0x0f との論理積を求めるのか謎です。 よろしくお願いします。
|

|