Aufgaben Iterator C#

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)

(benötigt using System.Linq und Assembly System.Core)

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



Johannes Waldmann 2012-06-25