未来软件的发展趋势来讲,数据结构与算法会越来越普适:
程序 = 数据结构 + 算法
一方面是因为硬件的不断升级,使得很多嵌入式系统现在已经与桌面系统的区别越来越小,可以跑更多的软件平台,使得数据结构与算法可以有更宽阔的应用场景。
另一方面,即使是嵌入式设备,其软件功能需求也在不断的升级,很多嵌入式平台应用了越来越多的视觉算法、数据库等等,有些需求的背后也是需要数据结构与算法做支撑的。
对于计算机类的特定算法(复杂度较高、运行资源需要多),比如搜索类的、地图求最短、最优路径之类的,在一般的嵌入式里面不太可能用得到,这些可以作为拓展思考用;但是图、红黑树、二叉树、字符匹配、查找、堆等等都是真真正正能够用得到的东西,需要慢慢渗透掌握。
学习路径:
1. 大O(复杂度分析)和迭代器 (最基本的理论)
2. 动态数组vector (理论推导和设计原理)
3. 双链表list (跟STL的双链表list相似)
4. 栈和队列(stack、queue)
5. 优先队列 (堆排序的思想+动态数组vector)
6. 常用算法 (检索,排序,仿函数等设计原理)
7. 轻量级关联容器(用动态排序数组代替红黑树做轻量级关联容器。适合很少的插入和删除、大量的检索,内存紧张的场合。)
8. 内存管理器基础 (边界标记、位图、自由列表、引用计数)
9. 哈希表 (不同数据类型的哈希算法、三个哈希表的原理)
10.内存池与固定内存分配算法