数据结构和算法思想
搞算法有相当一段时间了,从基本的数组,链表,栈,队列,树,散列,堆
以及常用的插入,SHELL,堆排,归并,快速,间接,桶排,外部排序.........
以美国人那本 数据结构和算法分析 第三版为参考书的
------------------------------------------------
这是我目前掌握的程度,对于基础的数据结构和排序算法都能熟练的写出实现
可现在觉得写个实现是太次了,没有任何意义,关键是思想啊
如何去分析出一个算法比写个实现真的难上100倍不止,同时我又发现没有高深的数学理论,你很难分析出一个算法的时间界。
暂不谈这个,还是说说思想。
所谓数据结构,也就是数据在内存中的存储形式,至少我就是这么认为,为了方便查找,删除,插入,排序,于是数据结构出现两个分支
其一:连续存储
其二:非连续存储
连续存储节点小,不需要保存链的信息,而非连续存储,你就必须保存链的信息,便于从一个节点找到下一个节点
这是两个的大的方向
然后又要细分:对于连续存储又分几个方向
数组,栈(也可以用链表),队列(也可以用链表),优先队列(也可以用链表),散列,堆
同样是从查找,删除,插入,排序几个方面也划分,
各有个的优点,各有各的长处,各有各的使用范围
对于非连续存储又分几个方向
链表,树,BTREE,红黑树==,图
非连续存储的数据结构一般是用来处理大量数据的
--------------------------------------------
然后说说算法思想,比如树和堆的递归思想,散列思想,归并算法的分治思想,合并思想==
这些东西才是真正高深的东西,是本质适用于一类事物。
所以我时不时反问自己这些思想是否掌握了?答案是否定的,尽管我能很快的写出实现,但是对于同类事物问题我却不怎么会分析,也就是说我之前都是囫囵吞枣。
唉,也许我是太浮躁了吧。。。
[解决办法]
这个得运用到具体的问题上才能体会出来。
单纯研究某个算法的,那是搞研究,现在大都是工程问题中应用这些算法。
慢慢来总会熟练的。
[解决办法]