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