IEnumerable<int> Nats () { for (int s = 0; true; s++) { yield return s; } }
Implementiere „das merge aus mergesort`` (Spezifikation?)
static IEnumerable<E> Merge<E> (IEnumerable<E> xs, IEnumerable<E> ys) where E : IComparable<E>
zunächst für unendliche Ströme,
Test: Merge(Nats.Select(x=>x*x),Nats.Select(x=>3*x+1)).Take(10)
Dann auch für endliche Ströme, Test:
Merge(new int [] {1,3,4}, new int [] {2,7,8})
Dann Mergesort
static IEnumerable<E> Sort<E> (IEnumerable<E> xs) where E : IComparable<E> { if (xs.Count() <= 1) { return xs; } else { // zwei Zeilen folgen ... } }Test:
Sort(new int [] { 3,1,4,1,5,9})