>백엔드 개발 >Golang >골랭 배열 전치

골랭 배열 전치

WBOY
WBOY원래의
2023-05-15 12:21:07644검색

최근 몇 년 동안 Golang은 특히 일부 대기업의 비즈니스 개발을 위한 주요 언어 중 하나로 프로그래머들 사이에서 계속해서 인기를 얻고 존경을 받고 있습니다. 배열은 데이터의 기본 구조로 프로그래밍에서 자주 사용되는 타입이다. 이 기사에서는 고전적인 Golang 배열 전치 방법을 소개합니다.

배열 전치란 무엇인가요?

배열 전치란 행렬의 행과 열을 바꾸는 것입니다. 예를 들어, 매트릭스 는 요소 유형을 나타냅니다. 예:

1 2 3
4 5 6
7 8 9

Golang 배열 전치 구현

M*N 행렬의 경우 2차원 배열을 사용하여 표현할 수 있습니다. Golang에서 2차원 배열의 정의는 다음과 같습니다.

1 4 7
2 5 8
3 6 9

먼저 2차원 배열을 정의하여 원본 행렬을 표현할 수 있습니다.

var array [n]Type

다음으로 transpose함수를 정의해야 합니다. code> 를 사용하여 행렬 전치를 구현합니다. 이 함수는 2차원 배열 a와 해당 행 및 열 번호 mn을 전달해야 합니다. 함수 구현은 다음과 같습니다. n表示数组长度,Type表示元素类型。例如:

var a [5]int // 定义一个长度为5的int数组
a[0] = 1     // 给第0个元素赋值为1

Golang数组转置实现

对于一个M*N的矩阵,我们可以用二维数组来表示。在Golang中,二维数组的定义如下:

var array [m][n]Type

可以先定义一个二维数组来表示原始矩阵:

var matrix = [3][3]int{
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9},
}

接下来,我们需要定义一个函数transpose来实现矩阵转置。该函数需要传入一个二维数组a以及其行列数mn。函数的实现如下:

func transpose(a [][]int, m, n int) [][]int {
    // 创建一个新的n*m的数组
    b := make([][]int, n)
    for i := 0; i < n; i++ {
        b[i] = make([]int, m)
    }

    // 将a的行与b的列对应
    for i := 0; i < n; i++ {
        for j := 0; j < m; j++ {
            b[i][j] = a[j][i]
        }
    }

    return b
}

在函数中,我们先创建了一个n*m的二维数组b,并对其每个元素进行了初始化。接着,我们对原始矩阵a进行遍历,并将a的行与b的列进行对应,将结果存入b中。最后,函数返回了转置后的矩阵b

func main() {
    matrix := [3][3]int{
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    }

    // 转置前
    fmt.Println(matrix)

    // 转置后
    transposedMatrix := transpose(matrix[:], 3, 3)
    fmt.Println(transposedMatrix)
}

함수에서는 먼저 n*m의 2차원 배열 b를 만들고 각 요소를 초기화합니다. 다음으로, 원래 행렬 a를 탐색하고 a의 행을 b의 열과 일치시키고 결과를 b에 저장합니다. 인. 마지막으로 함수는 전치된 행렬 b를 반환합니다.

메인 함수에서 이 함수를 호출하여 배열 전치를 구현할 수 있습니다.

[[1 2 3] [4 5 6] [7 8 9]]
[[1 4 7] [2 5 8] [3 6 9]]

출력 결과는 다음과 같습니다.

rrreee

Summary

위 구현을 통해 Golang 배열 전치 작업이 매우 간단하다는 것을 알 수 있습니다. . 원래 행렬을 순회하여 행과 열을 대응시키세요. 물론 1차원 배열을 사용하여 2차원 배열을 시뮬레이션하는 것과 같은 다른 구현도 있습니다. 어떤 방법을 선택하든 예상치 못한 오류를 방지하려면 배열 첨자 경계 문제에 주의해야 합니다. 지속적인 연습과 연습을 통해 Golang의 배열 전치 연산을 쉽게 익힐 수 있다고 믿습니다. 🎜

위 내용은 골랭 배열 전치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.