Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Kikolo
Thema: Heaps Algorithmus
Am im Forum: Grundlagen von C#

Du hast die Methode „erweiterungsfunktion“ genannt. Ich dachte eigentlich es sei eine generische Methode? Oder eine generische Erweiterungsmethode also eine Kombination aus einer generischen Methode und einer Erweiterungsmethode. Stimmst du mir da zu oder ist mein Eindruck falsch?

Thema: Heaps Algorithmus
Am im Forum: Grundlagen von C#

Guten Morgen,
Ich möchtes den oben genannten Algorithmus in c# implementieren. Den pseudocode habe ich auf Wikipedia gefunden. Nachdem ich keine Lösung gefunden habe habe ich gegoogelt.



public static IEnumerable<IEnumerable<T>> Permute<T>(this IList<T> v)
{
    ICollection<IList<T>> result = new List<IList<T>>();

    Permute(v, v.Count, result);

    return result;
}

private static void Permute<T>(IList<T> v, int n, ICollection<IList<T>> result)
{
    if (n == 1)
    {
        result.Add(new List<T>(v));
    }
    else
    {
        for (var i = 0; i < n; i++)
        {
            Permute(v, n - 1, result);
            Swap(v, n % 2 == 1 ? 0 : i, n - 1);
        }
    }
}

private static void Swap<T>(IList<T> v, int i, int j)
{
    var t = v[i];
    v[i] = v[j];
    v[j] = t;
}



Könnte das vielleicht jemand Zeile für Zeile mit mir durchgehen? Ich verstehe nicht genau was es mit den typparametern auf sich hat. Es wirkt auf mich wie generics aber so ganz fällt der Groschen nicht. Irgendwie sitze ich einfach auf dem Schlauch was genau da passiert.
Kann mir jemand helfen?