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