Сортировка с подсчетом количества вхождений - C#
Формулировка задачи:
Добрый день всем. Подскажите решение по такой задаче: есть файл с более чем несколькими миллионами строк. Заносим это все дело в список и нужно посчитать повторение каждого элемента списка и отсортировать от наиболее повторяющихся к наименее повторяющимся.
Пример:
Исходные строки:
строка1
строка2
строка2
стркоа3
строка4
строка4
Необходимо получить нечто вроде такоего:
строка4:2
строка2:2
строка3:1
строка1:1
Тут вродебы ничего сложного, алгоритмы еще в школе учили, но это хорошо когда мало элементов, а если в списке пару миллионов строк то сравнить каждую с каждой и подсчитать количество повторений затягивается на часы.
Посоветуйте как эту задачу можно решить? Заранее благодарен.
Решение задачи: «Сортировка с подсчетом количества вхождений»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace linqDistinct { class Program { static void Main(string[] args) { string[] array = new string[] { "строка1", "строка2", "строка2", "строка2", "стркоа3", "строка4", "строка4" }; //linq :D var tmpArray = (from p in array group p by p into value select new { value = value.Key, count = value.Count() }).ToArray(); foreach (var item in tmpArray.OrderByDescending( m => m.count )) { Console.WriteLine(item.value+": "+item.count); } Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д