데이터세트를 처리할 때 요소 목록의 가능한 모든 순열을 생성해야 하는 경우가 많습니다. Go는 효율적인 순열 생성을 가능하게 하는 강력한 프로그래밍 환경을 제공합니다.
힙의 알고리즘은 순열 생성을 위한 잘 알려진 방법입니다. 요소 쌍을 교환하여 이전 순열로부터 각 순열을 구성합니다. 다음 힙 알고리즘 구현은 배열의 모든 순열을 반환합니다.
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 }
다음은 이 함수의 사용법을 보여주는 예입니다.
arr := []int{1, 2, 3} fmt.Println(permutations(arr))
출력:
[[1 2 3] [2 1 3] [3 2 1] [2 3 1] [3 1 2] [1 3 2]]
순열은 사전순으로 정렬되지 않습니다. 정렬된 순열을 얻으려면 순열에 대한 링크된 문서에 설명된 대로 계승 숫자 시스템을 사용하여 생성하는 것이 좋습니다.
Go에서 순열을 생성하기 위한 기타 리소스는 다음과 같습니다.
위 내용은 Go에서 목록의 모든 순열을 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!