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})