Подскажите как быстро соединить две отсортированные коллекции - C#
Формулировка задачи:
привет
есть штук 10 коллекций объектов отсортированных по полю datatime
суммарное количество элементов - 30 000 000
подскажите как быстрее всего собрать из этих коллекций в одну - отсортированную по этому же полю
Решение задачи: «Подскажите как быстро соединить две отсортированные коллекции»
textual
Листинг программы
- static IEnumerable<T> Merge<T>(IEnumerable<IEnumerable<T>> collections, IComparer<T> comparer = null)
- {
- if (comparer == null)
- comparer = Comparer<T>.Default;
- var result = new List<T>();
- var iters = new List<IEnumerator<T>>();
- foreach (var collection in collections)
- {
- var iter = collection.GetEnumerator();
- if (iter.MoveNext())
- iters.Add(iter);
- else
- iter.Dispose();
- }
- while (iters.Count > 0)
- {
- var min = iters[0];
- for (int i = 1; i < iters.Count; i++)
- {
- if (comparer.Compare(iters[i].Current, min.Current) < 0)
- min = iters[i];
- }
- result.Add(min.Current);
- if (!min.MoveNext())
- {
- iters.Remove(min);
- min.Dispose();
- }
- }
- return result;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д