Maison >développement back-end >Golang >transposition du tableau Golang

transposition du tableau Golang

WBOY
WBOYoriginal
2023-05-15 12:21:07607parcourir

Ces dernières années, Golang a continué à être recherché et respecté parmi les programmeurs, notamment en tant que l'un des principaux langages de développement commercial dans certaines grandes entreprises. En tant que structure de base des données, le tableau est un type souvent utilisé en programmation. Cet article présentera une méthode classique de transposition de tableau Golang.

Qu'est-ce que la transposition de tableau ?

La transposition de tableau consiste à échanger les lignes et les colonnes d'une matrice. Par exemple, la matrice Indique le type d'élément. Par exemple :

1 2 3
4 5 6
7 8 9

Implémentation de transposition de tableau Golang

Pour une matrice M*N, nous pouvons utiliser un tableau bidimensionnel pour la représenter. En Golang, la définition d'un tableau bidimensionnel est la suivante :

1 4 7
2 5 8
3 6 9

Vous pouvez d'abord définir un tableau bidimensionnel pour représenter la matrice d'origine :

var array [n]Type

Ensuite, nous devons définir une fonction transpose code> pour implémenter la transposition matricielle . Cette fonction doit transmettre un tableau bidimensionnel <code>a et ses numéros de ligne et de colonne m et n. L'implémentation de la fonction est la suivante : 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)
}

Dans la fonction, nous créons d'abord un tableau bidimensionnel b de n*m et initialisons chaque élément de celui-ci. Ensuite, nous parcourons la matrice d'origine a, faisons correspondre les lignes de a avec les colonnes de b et stockons les résultats dans b dans. Enfin, la fonction renvoie la matrice transposée b.

Dans la fonction principale, nous pouvons appeler cette fonction pour implémenter la transposition de tableau :

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

Le résultat de sortie est le suivant :

rrreee

Résumé

Grâce à l'implémentation ci-dessus, nous pouvons voir que l'opération de transposition de tableau Golang est très simple . Parcourez simplement la matrice d'origine et faites correspondre les lignes et les colonnes. Bien entendu, il existe d’autres implémentations, comme l’utilisation d’un tableau unidimensionnel pour simuler un tableau bidimensionnel. Quelle que soit la méthode que vous choisissez, vous devez faire attention au problème des limites des indices de tableau pour éviter les erreurs inattendues. Avec une pratique et une pratique continues, je pense que vous pouvez facilement maîtriser l'opération de transposition de tableau de Golang. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn