Сортировка, группировка, поиск анаграм - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть такой код:
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Demo
{
class Program
    {
        static void Main(string[] args)
        {
         var groups = Methods.CreateObject.ReadInput().GroupBy(x => x.Length);
            foreach (var group in groups)
            {
                Console.WriteLine("Количество слов длиной: {0}", group.Key);
                foreach (var word in group)
                {
                    Console.WriteLine(" {0}", word);
                }
            }    
}
}
 
 public class Methods
    {
        protected Methods()
        { }
 
        private static Methods mtds = new Methods();
        public static Methods CreateObject
        { get { return mtds; } }
 
        public IEnumerable<string> ReadInput()
        {
            using (var file = File.OpenText(@"C:\Dictionary.txt"))
            {
                while (!file.EndOfStream)
                {
 
                    yield return file.ReadLine();
                }
            }
        }
    }
}
Файл большой(2 Гб примерно), по 500млн строк одинаковых слов(одно слово в одной строке), поэтому при запуске приложение съедает до 1,6 Гб оперативы, потом вылетает OutMemoryException в mscorlib. Есть ли способы оптимизировать работу приложения(чтобы съедал 200-300 мб) для подобных задач типа поиска анаграм/группировки/сортировки? С memorymappedfile связывать мне кажется провально, уже пытался...

Решение задачи: «Сортировка, группировка, поиск анаграм»

textual
Листинг программы
var groups = File.ReadLines(@"C:/Dictionary.txt").GroupBy(x => x.Length);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы