Сортировка массива по возрастанию числа одинаковых элементов - C#
Формулировка задачи:
Здравствуйте. Рандомно генерируется массив чисел, нужно отсортировать массив так, чтобы одинаковые элементы стояли рядом и группы одинаковых чисел шли по возрастанию количества элементов в них. К примеру если у нас есть массив -2 5 -2 5 5 3 1 4 1 -2 5, то на выходе должен быть вот такой 3 4 1 1 -2 -2 -2 5 5 5 5. Помогите реализовать.
Решение задачи: «Сортировка массива по возрастанию числа одинаковых элементов»
textual
Листинг программы
static void Main(string[] args)
{
var array = new int[] {-2, 5, -2, 5, 5, 3, 1, 4, 1, -2, 5};
Console.WriteLine(String.Join(" ", array));
var result = new int[] {};
array.GroupBy(x => x)
.Select(y => new { Value = y.Key, Count = y.Count() })
.OrderBy(z => z.Count)
.Select(v =>
{
result = result.Concat(Enumerable.Repeat<int>(v.Value, v.Count).Select(x => x)).ToArray();
return 0; })
.ToArray();
array = result;
Console.WriteLine(String.Join(" ", array));
Console.ReadKey();
}