深圳网站定制深圳网站建设公司,三星单片机开发网站,少儿编程培训机构排名前十,专业的移动网站建设公司价格仍然还是一个数组
基本介绍
一般就是指二维以上的数组 当一个数组中大部分元素是0 ,或者为同一个值的数组时,可以使用系数数组来保存该数组.
稀疏数组的处理方法:
记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程…仍然还是一个数组
基本介绍
一般就是指二维以上的数组 当一个数组中大部分元素是0 ,或者为同一个值的数组时,可以使用系数数组来保存该数组.
稀疏数组的处理方法:
记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlBq9xxF-1677594413402)(…/…/images/Pasted%20image%2020230228201055.png)] 这就是一个六行七列的二维数组. 所以用一个n行三类的二维数组来记录这个数组 第一列是行数, 第二列是列数, 第三列是值 6 7 0 0 3 22 0 6 15 … 5 2 28
这里的6 7 0 记录的是这个二维数组有6 行7 列 的0 值 其余行记录不一样的值的位置
这是一种压缩 但是我们可以发现,一个数值会多出两个值(行列)来表示,所以如果有值的数,大于了原来数组的1/3 就得不偿失了
代码实现
一个二维数组转换成稀疏数组
package main //稀疏数组 type ValueNode struct { row int col int Val int
} func main() { // 创建一个原始的数组 var chessMap [11][11]int chessMap[1][2] 1 chessMap[2][3] 2 // 1 代表黑子 //2 代表白子 //输出原始数组 for _, item1 : range chessMap { for _, item2 : range item1 { print(item2) } println() } // 转换成稀疏数组 /* 思路 1.遍历数组,如果发现有一个元素的值不是0 ,就创建一个node结构体 2.将其放入到对应的切片中就可以了 */ var SparseArr []ValueNode //标准的稀疏数组要记录二维数组的行和列 valueNode : ValueNode{ row: 11, col: 11, Val: 0, } SparseArr append(SparseArr, valueNode) // 结构体切片 //还是要全部扫描一遍的 for i, item1 : range chessMap { for j, item2 : range item1 { if item2 ! 0 { // 创节点了 valueNode ValueNode{ row: i, col: j, Val: item2, } SparseArr append(SparseArr, valueNode) } } } // 输出稀疏数组 for i, valueNode : range SparseArr { println(i, valueNode.row, valueNode.col, valueNode.Val) } }
将稀疏数组输入到一个文件中
package main import ( bufio fmt os) //稀疏数组 type ValueNode struct { row int col int Val int
} func main() { path : ./resources/class.data // 创建一个原始的数组 var chessMap [11][11]int chessMap[1][2] 1 chessMap[2][3] 2 // 1 代表黑子 //2 代表白子 //输出原始数组 for _, item1 : range chessMap { for _, item2 : range item1 { print(item2) } println() } //Arr2Sparse(chessMap) // 转换成稀疏数组 /* 思路 1.遍历数组,如果发现有一个元素的值不是0 ,就创建一个node结构体 2.将其放入到对应的切片中就可以了 */ var SparseArr []ValueNode //标准的稀疏数组要记录二维数组的行和列 valueNode : ValueNode{ row: 11, col: 11, Val: 0, } SparseArr append(SparseArr, valueNode) // 结构体切片 //还是要全部扫描一遍的 for i, item1 : range chessMap { for j, item2 : range item1 { if item2 ! 0 { // 创节点了 valueNode ValueNode{ row: i, col: j, Val: item2, } SparseArr append(SparseArr, valueNode) } } } //输出稀疏数组 file, err : os.OpenFile(path, os.O_WRONLY, 0666) if err ! nil { fmt.Println(文件打开失败, err) } defer file.Close() for _, valueNode : range SparseArr { s : fmt.Sprintf(%d %d %d\n, valueNode.row, valueNode.col, valueNode.Val) write : bufio.NewWriter(file) write.WriteString(s) write.Flush() if err ! nil { println(写入失败) } } }稀疏数组变成二维数组
package main import ( bufio fmt os) //稀疏数组 type ValueNode struct { row int col int Val int
} func main() { path : ./resources/class.data // 恢复原始的数组 // 打开稀疏数组的文件 // 文件转换成稀疏数组(切片) var sparse []ValueNode file, _ : os.Open(path) defer file.Close() r : bufio.NewReader(file) for true { line, _, err : r.ReadLine() if err ! nil { break } str : string(line) var ( num1 int num2 int num3 int ) fmt.Sscanf(str, %d %d %d, num1, num2, num3) //println(num1, num2, num3) valnode : ValueNode{ row: num1, col: num2, Val: num3, } sparse append(sparse, valnode) } //fmt.Println(sparse) // 得到数据 //创建一个二维数组 chessMap : make([][]int, sparse[0].row) for i : 0; i sparse[0].row; i { chessMap[i] make([]int, sparse[0].col) } //fmt.Println(chessMap) // 遍历稀疏数组 for _, valNode : range sparse { //跳过第一个,不然会数组越界 if valNode.Val 0 { continue } /* 或者 if index !0 { chessMap[valNode.row][valNode.col] valNode.Val } */ chessMap[valNode.row][valNode.col] valNode.Val } // 输出恢复后的数据 for _, v : range chessMap { for _, v2 : range v { print(v2) } println() }
}
文章转载自: http://www.morning.kpxky.cn.gov.cn.kpxky.cn http://www.morning.pqppj.cn.gov.cn.pqppj.cn http://www.morning.skrcn.cn.gov.cn.skrcn.cn http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn http://www.morning.tgwfn.cn.gov.cn.tgwfn.cn http://www.morning.lgwjh.cn.gov.cn.lgwjh.cn http://www.morning.crdtx.cn.gov.cn.crdtx.cn http://www.morning.qmqgx.cn.gov.cn.qmqgx.cn http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn http://www.morning.xhjjs.cn.gov.cn.xhjjs.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.mumgou.com.gov.cn.mumgou.com http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.rsszk.cn.gov.cn.rsszk.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.llmhq.cn.gov.cn.llmhq.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.yrms.cn.gov.cn.yrms.cn http://www.morning.trtxt.cn.gov.cn.trtxt.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn http://www.morning.xxknq.cn.gov.cn.xxknq.cn http://www.morning.hbdqf.cn.gov.cn.hbdqf.cn http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.mcpby.cn.gov.cn.mcpby.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn http://www.morning.dhckp.cn.gov.cn.dhckp.cn http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn http://www.morning.rhqn.cn.gov.cn.rhqn.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn http://www.morning.mrqwy.cn.gov.cn.mrqwy.cn http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.ldcrh.cn.gov.cn.ldcrh.cn http://www.morning.lpnpn.cn.gov.cn.lpnpn.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.aswev.com.gov.cn.aswev.com http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn http://www.morning.kqyyq.cn.gov.cn.kqyyq.cn http://www.morning.xiaobaixinyong.cn.gov.cn.xiaobaixinyong.cn http://www.morning.mglqf.cn.gov.cn.mglqf.cn http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn http://www.morning.fnpmf.cn.gov.cn.fnpmf.cn http://www.morning.zrfwz.cn.gov.cn.zrfwz.cn http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.cbnlg.cn.gov.cn.cbnlg.cn http://www.morning.tnqk.cn.gov.cn.tnqk.cn http://www.morning.zfcfk.cn.gov.cn.zfcfk.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.grpbt.cn.gov.cn.grpbt.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.mjbkp.cn.gov.cn.mjbkp.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.saastob.com.gov.cn.saastob.com http://www.morning.pjqxk.cn.gov.cn.pjqxk.cn http://www.morning.xlmgq.cn.gov.cn.xlmgq.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn