Anonymous user
Stream merge: Difference between revisions
→{{header|C sharp|C#}}
Line 590:
namespace RosettaCode
{
static class StreamMerge
{
static IEnumerable<T> Merge2<T>(IEnumerable<T>
{
var q1 = new Queue<T>(
var q2 = new Queue<T>(
while (q1.Any() && q2.Any())
{
Line 605:
}
static IEnumerable<T> MergeN<T>(params IEnumerable<T>[]
{
var queues =
var headComparer = Comparer<Queue<T>>.Create((x, y) => x.Peek().CompareTo(y.Peek()));
queues.Sort(headComparer);
while (queues.Any())
{
var
if (q.Any())
{
var index = queues.BinarySearch(q, headComparer);
queues.Insert(index < 0 ? ~index : index, q);
}
}
}
static void Main(
{
var a = new[] { 1, 4, 7, 10 };
|