Вот несколько методов C# для сортировки массива по количеству бит в каждом элементе:
Метод 1: использование LINQ и BitCount
using System;
using System.Linq;
public class Program
{
public static void Main()
{
int[] array = { 5, 3, 9, 7, 1 };
var sortedArray = array.OrderBy(x => CountBits(x)).ToArray();
foreach (var element in sortedArray)
{
Console.WriteLine(element);
}
}
public static int CountBits(int number)
{
int count = 0;
while (number != 0)
{
count += number & 1;
number >>= 1;
}
return count;
}
}
Метод 2: использование Array.Sort и специального средства сравнения
using System;
public class Program
{
public static void Main()
{
int[] array = { 5, 3, 9, 7, 1 };
Array.Sort(array, new BitCountComparer());
foreach (var element in array)
{
Console.WriteLine(element);
}
}
}
public class BitCountComparer : IComparer<int>
{
public int Compare(int x, int y)
{
int countX = CountBits(x);
int countY = CountBits(y);
return countX.CompareTo(countY);
}
private int CountBits(int number)
{
int count = 0;
while (number != 0)
{
count += number & 1;
number >>= 1;
}
return count;
}
}
Метод 3: использование Array.Sort и лямбда-выражения
using System;
public class Program
{
public static void Main()
{
int[] array = { 5, 3, 9, 7, 1 };
Array.Sort(array, (x, y) => CountBits(x).CompareTo(CountBits(y)));
foreach (var element in array)
{
Console.WriteLine(element);
}
}
public static int CountBits(int number)
{
int count = 0;
while (number != 0)
{
count += number & 1;
number >>= 1;
}
return count;
}
}
Эти методы позволяют сортировать массив C# по количеству битов в каждом элементе. Метод 1 использует метод LINQ OrderBy
со специальной функцией подсчета битов. Метод 2 и метод 3 используют метод Array.Sort
с пользовательским компаратором или лямбда-выражением соответственно для сравнения количества битов элементов во время процесса сортировки. Выберите метод, который лучше всего соответствует вашему стилю кодирования и требованиям к производительности.