Подскажите как быстро соединить две отсортированные коллекции - C#

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

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

привет есть штук 10 коллекций объектов отсортированных по полю datatime суммарное количество элементов - 30 000 000 подскажите как быстрее всего собрать из этих коллекций в одну - отсортированную по этому же полю

Решение задачи: «Подскажите как быстро соединить две отсортированные коллекции»

textual
Листинг программы
  1. static IEnumerable<T> Merge<T>(IEnumerable<IEnumerable<T>> collections, IComparer<T> comparer = null)
  2. {
  3.     if (comparer == null)
  4.         comparer = Comparer<T>.Default;
  5.  
  6.     var result = new List<T>();
  7.     var iters = new List<IEnumerator<T>>();
  8.  
  9.     foreach (var collection in collections)
  10.     {
  11.         var iter = collection.GetEnumerator();
  12.         if (iter.MoveNext())
  13.             iters.Add(iter);
  14.         else
  15.             iter.Dispose();
  16.     }
  17.  
  18.     while (iters.Count > 0)
  19.     {
  20.         var min = iters[0];
  21.         for (int i = 1; i < iters.Count; i++)
  22.         {
  23.             if (comparer.Compare(iters[i].Current, min.Current) < 0)
  24.                 min = iters[i];
  25.         }
  26.  
  27.         result.Add(min.Current);
  28.         if (!min.MoveNext())
  29.         {
  30.             iters.Remove(min);
  31.             min.Dispose();
  32.         }
  33.     }
  34.  
  35.     return result;
  36. }

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


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

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

14   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы