- ビット数を数える関数を作成する: まず、各要素のビット数を数えるための関数を作成します。次のようなメソッドを使用できます。
static int CountBits(int number)
{
int count = 0;
while (number != 0)
{
count += number & 1;
number >>= 1;
}
return count;
}
この関数は、与えられた数値のビット表現で1の数を数えます。
- 配列をビット数でソートする: 次に、配列をビット数でソートするための方法を示します。
static void SortByBitCount(int[] array)
{
Array.Sort(array, (x, y) => CountBits(x) - CountBits(y));
}
ここでは、Array.Sort
メソッドを使用し、与えられた配列をビット数で比較してソートします。ラムダ式 (x, y) => CountBits(x) - CountBits(y)
によって、各要素のビット数で比較が行われます。
- コード例: 以下に例を示します。
int[] array = { 5, 3, 10, 7, 1 };
SortByBitCount(array);
// ソート後の結果: { 1, 3, 5, 7, 10 }
上記のコードでは、配列 { 5, 3, 10, 7, 1 }
をビット数でソートしています。ソート後の結果は { 1, 3, 5, 7, 10 }
になります。
以上がC#を使用して配列をビット数でソートする方法です。ご参考までに、シンプルな解決策として利用していただければと思います。