Heim >Backend-Entwicklung >Golang >Wie erstelle ich alle Permutationen einer Liste in Go?

Wie erstelle ich alle Permutationen einer Liste in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-05 15:20:10730Durchsuche

How to Generate All Permutations of a List in Go?

Permutationen in Go: Eine ausführliche Anleitung

In diesem Artikel werden die verschiedenen Möglichkeiten zum Generieren aller möglichen Permutationen einer Liste von Elementen in beschrieben Los.

Eine gängige Methode ist der Heap-Algorithmus, der jede Permutation aus der vorherigen generiert, indem er ein Elementpaar vertauscht. Die folgende Go-Funktion implementiert diesen Algorithmus:

func permutations(arr []int)[][]int{
    var helper func([]int, int)
    res := [][]int{}

    helper = func(arr []int, n int){
        if n == 1{
            tmp := make([]int, len(arr))
            copy(tmp, arr)
            res = append(res, tmp)
        } else {
            for i := 0; i < n; i++{
                helper(arr, n - 1)
                if n % 2 == 1{
                    tmp := arr[i]
                    arr[i] = arr[n - 1]
                    arr[n - 1] = tmp
                } else {
                    tmp := arr[0]
                    arr[0] = arr[n - 1]
                    arr[n - 1] = tmp
                }
            }
        }
    }
    helper(arr, len(arr))
    return res
}

Um diese Funktion zu verwenden, übergeben Sie einfach ein Segment von Ganzzahlen und es wird ein Segment aller Permutationen der Eingabeliste zurückgegeben. Zum Beispiel:

arr := []int{1, 2, 3}
fmt.Println(permutations(arr))

Eine andere Methode zur Generierung von Permutationen ist die Verwendung des faktoriellen Zahlensystems. Diese Methode ermöglicht die schnelle Generierung der n-ten lexikografischen Permutation. Weitere Informationen zu dieser Methode finden Sie im Abschnitt „Permutation“ im obigen Artikel.

Durch die Implementierung dieser Methoden können Sie ganz einfach Permutationen in Go generieren, die Sie in einer Vielzahl von Anwendungen verwenden können.

Das obige ist der detaillierte Inhalt vonWie erstelle ich alle Permutationen einer Liste in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn