GO 数据结构与算法


程序设计离不开数据结构和算法
数据结构是 数据组织 和 存储的逻辑形式
以达到方便 访问 和 修改 数据 的目的
算法是根据 输入输出的需求 设计的一系列计算过程  是程序的灵魂
设计良好的算法的重要意义 如Thomas在《算法导论》中提到
计算机可以做得很快 但不是无限快;
存储器可以做到很便宜 但不是免费的
因此 计算时间是一种有限的资源
存储空间也是一种有限的资源
这些有限的资源必须有效地使用
那些时间上和空间上有效的算法可以帮助做到这一点

数据结构和算法之间的关系
数据结构和算法 相铺相成 算法无法脱离数据结构 否则就是空谈
衡量数据结构与算法
算法的速度 资源消耗如何 是复杂度分析 复杂度分析包括 时间复杂度 空间复杂度
为什么要做复杂度分析
通过统计 监控 能得到算法执行的时间和占用内存的大小 这种方法叫做 事后统计法 能够得到算法的执行效率
具有局限性
受测试环境影响较大 测试环境中不同硬件 不同机器对测试结果影响较大 受数据规模影响
一个不用具体的测试数据来测试 就可以粗略地估计算法执行效率的方法 就是复杂度分析
内容涵盖了Go标准库中的3个包
sort 包 基本的排序方法 支持切片数据排序 及用户自定义数据集合排序
index/suffixary 包 实现了后缀数组相关算法以支持许多常见的字符串操作
container 包 提供了对heap list和ring 这3种数据结构的底层支持 任何实现了相应接口的数据结构都可以调用该结构的方法




GO 数据结构与算法和algorithms相关