• 稀疏数组sparseArray


    稀疏数组sparseArray

     

    应用实例
    1) 使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)
    2) 把稀疏数组存盘,并且可以从新恢复原来的二维数组数
    3) 整体思路分析
    4) 代码实现
    import scala.collection.mutable.ArrayBuffer
    //稀疏数组--压缩 恢复
    object SparseArr {
      def main(args: Array[String]): Unit = {
        val rowSize = 11    // 棋盘的行
        val colSize = 11    // 棋盘的列
        //演示一个稀疏数组的使用
        val chessMap = Array.ofDim[Int](rowSize, colSize)
        //初始化
        chessMap(1)(2) = 1 // 1  代表黑子
        chessMap(2)(3) = 2 // 2  代表白子
    
        //输出原始的棋盘
        println("------输出棋盘原始数组-------")
        for (item <- chessMap) {
          for (item2 <- item) {
            printf("%d	", item2)
          }
          println()
        }
    
        //将chessMap转成稀疏数组
        // 思路 => 效果是达到对数据的压缩
        // class Node (row ,col ,value)
        // ArrayBuffer
        val sparseArr = ArrayBuffer[Node]()
        val node = new Node(rowSize,colSize,0)
        sparseArr.append(node)
        for ( i <-  0 until(chessMap.length)){
          for ( j <- 0 until(chessMap(i).length) ){
            //判断该值是否为0,如果不为0就保存
            if(chessMap(i)(j) !=0 ){
              //构建一个Node
              val node = new Node(i,j,chessMap(i)(j))
              //加入到稀疏数组
              sparseArr.append(node)
            }
          }
        }
    
        println("------输出棋盘稀疏数组-------")
        for ( node <- sparseArr){
          printf("%d	%d	%d
    ",node.row,node.col,node.value)
        }
    
        //存盘
        //读盘 ->
        //稀疏数组 -> 原始数组
    
        //读取稀疏数组的第一个节点
        val newNode = sparseArr(0)
        val rowSize2 = newNode.row
        val colSize2 = newNode.col
    
        val chessMap2 = Array.ofDim[Int](rowSize2,colSize2)
    
        for (i <- 1 until sparseArr.length){
          val node = sparseArr(i)
          chessMap2(node.row)(node.col) = node.value
        }
    
        println("----从稀疏数组恢复后的数组----")
        for (item <- chessMap2){
          for (item2 <- item){
            printf("%d	",item2)
          }
          println()
        }
      }
    }
    
    class Node(val row: Int, val col: Int, val value: Int)
    

      

  • 相关阅读:
    ContextLoaderListener作用详解
    Spring启动流程
    解决filter拦截request中body内容后,字符流关闭,无法传到controller的问题
    Spring拦截器从Request中获取Json格式的数据
    Filter和Interceptor的终归作用还是从入口修改或验证请求进来的数据
    HttpServletRequest常用获取URL的方法
    Spark1.0.0 监测方法
    nginx代理人server结合tomcat采用
    Guangsoushensou 2
    admob广告开始个人资料网址
  • 原文地址:https://www.cnblogs.com/Diyo/p/11305850.html
Copyright © 2020-2023  润新知