数据结构与算法的理解
广义理解
数据结构是一组数据的 存储 结构,算法是一组数据的 操作 方法。
如果开发的每一个软件,写的每一段程序的时候,都简单看做 信息 的 输入、运算、输出。那么这里只要需要关注三个问题:
- 信息从现实世界到数据世界的映射
- 数据的传输
- 数据的存储和运算
事实上,我们大多数的编程工作(初始化变量、定义函数、定义类)关注的第 3 点 数据的存储和运算 就是建立在 数据结构与算法 的基础之上。只不过和我一样的大多数人不自知而已,只要实现了业务功能,什么存储、运算只有在程序达不到最低效率标准的时候才会回过头去考虑。
狭义理解
数据结构与算法学的就是那些著名的数据结构和算法。
数据结构有数组、链表、栈、堆等,算法有递归、……干了这么多年竟然就知道这一个算法,汗!!!……难怪每次数据处理基本没有花样可玩,甚至在使用 Python 这么久了我竟然没法彻底描述基本的数据类型是用什么数据结构实现的。熟悉了这些著名的数据结构与算法过程中希望能回头去搞清楚每一种基础数据类型的存储结构,在将来的实际开发工作中高效的解决问题。
学习范围
数据结构通常是为算法服务的,算法通常需要作用在特定的数据结构之上。
数据结构与算法概览如文章底部的图,这些课程需要掌握常用的10 种数据结构、10 种算法。
- 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
- 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法