Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menjana Semua Pilihatur Senarai dalam Go dengan Cekap?
Apabila berurusan dengan set data, selalunya perlu menjana semua pilih atur yang mungkin bagi senarai elemen. Go menyediakan persekitaran pengaturcaraan teguh yang membolehkan penciptaan pilih atur yang cekap.
Algoritma Heap ialah kaedah yang terkenal untuk menjana pilih atur. Ia membina setiap pilih atur daripada yang sebelumnya dengan menukar pasangan elemen. Pelaksanaan algoritma Heap berikut mengembalikan semua pilih atur tatasusunan:
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 }
Berikut ialah contoh yang menunjukkan penggunaan fungsi ini:
arr := []int{1, 2, 3} fmt.Println(permutations(arr))
Output:
[[1 2 3] [2 1 3] [3 2 1] [2 3 1] [3 1 2] [1 3 2]]
Sila ambil perhatian bahawa pilih atur tidak disusun mengikut leksikografi. Untuk mencapai pilih atur yang diisih, pertimbangkan untuk menjananya menggunakan sistem nombor faktorial, seperti yang diterangkan dalam dokumentasi terpaut pada pilih atur.
Sumber lain untuk menjana pilih atur dalam Go termasuk:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Pilihatur Senarai dalam Go dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!