数据结构和算法的重要性
- 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算
- 一般来讲 程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis等)来优化程序,再深入的思考一下,这些计算框架和缓存技术, 它的核心功能是哪个部分呢?
- 拿实际工作经历来说, 在Unix下开发服务器程序,功能是要支持上千万人同时在线, 在上线前,做内测,一切OK,可上线后,服务器就支撑不住了, 公司的CTO对代码进行优化,再次上线,坚如磐石。你就能感受到程序是有灵魂的,就是算法。
- 目前程序员面试的门槛越来越高,很多一线IT公司(大厂),都会有数据结构和算法面试题(负责的告诉你,肯定有的)
- 如果你不想永远都是代码工人,那就花时间来研究下数据结构和算法
目录
3.1 稀疏 sparsearray 数组
3.1.1先看一个实际的需求
编写的五子棋程序中,有存盘退出和续上盘的功能。
![](https://img-blog.csdnimg.cn/6a233b52d01a418f961d879afc5632b9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6bKB6L-36YKj,size_20,color_FFFFFF,t_70,g_se,x_16)
分析问题
因为该二维数组的很多值是默认值
0,
因此记录了
很多没有意义的数据
.->
稀疏数组
。
3.1.2基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是
:
1)
记录数组
一共有几行几列,有多少个不同
的值
2)
把具有不同值的元素的行列及值记录在一个小规模的数组中,从而
缩小程序
的规模
稀疏数组举例说明
![](https://img-blog.csdnimg.cn/edc1e0a6fe894988bc09cb952b68c214.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6bKB6L-36YKj,size_20,color_FFFFFF,t_70,g_se,x_16)
其中第一行表示:总共有6行、7列、有效值为8个数据也从 6行7列 ,压缩为 9行3列
![](https://img-blog.csdnimg.cn/919271b1da3e45f195ea4457992fea99.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6bKB6L-36YKj,size_20,color_FFFFFF,t_70,g_se,x_16)