1.使用原因 2.使用原理 3.使用方法
golang稀疏数组
在写程序的存储使用数组时原数组中会存在大量的无效数据,占据了大量的存储空间,对服务器的读取和储存造成负担,因此我们可以使用稀疏数组进行优化。二维数组:0 0 0 0 0 0 ————》 稀疏数组:row col val 0 0 0 1 0 0 6 6 0 几行几列 0 2 0 2 0 0 1 3 1 val 所在位置 0 0 0 3 0 0 2 1 2 0 0 0 0 0 0 2 3 2 0 0 0 0 0 0 3 2 3
package main import ( "fmt" ) type ValNode struct { row int col int val int } func main() { //创建上图原始数组 var chessMap [6][6]int chessMap[1][3] = 1 chessMap[2][1] = 2 chessMap[2][3] = 2 chessMap[3][2] = 3 for _, v := range chessMap { for _, v2 := range v { fmt.Printf("%dt", v2) } fmt.Println() } //转化为稀疏数组 //思路: //1遍历chessmao,如果发现有一个元素的值不为0,创建一个node结构体 //2将起放入对应的切片 var sparseArr []ValNode valNode := ValNode{ //记录数组的规模 row : 6, col : 6, val : 0, } sparseArr = append(sparseArr, valNode) for i, v := range chessMap { for j, v2 := range v { if v2 != 0 { valNode := ValNode{ row : i, col : j, val : v2, } sparseArr = append(sparseArr, valNode) } } } //输出稀疏数组 fmt.Println("当前的稀疏数组是:") for i, valNode := range sparseArr{ fmt.Printf("%d: %d %d %dn", i, valNode.row, valNode.col, valNode.val) } var chessMap2[6][6]int for i, valNode := range sparseArr{ //遍历sparesArr 文件每一行 if i != 0 { // 跳过一行数据,此为数组大小 chessMap2[valNode.row][valNode.col] = valNode.val } } fmt.Println("恢复的数据") for _, v := range chessMap2 { for _, v2 := range v { fmt.Printf("%dt", v2) } fmt.Println() } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算