Сортировка массива по возрастанию числа одинаковых элементов - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д