这段时间大部分的时间都花在了软考上,但是自考也要进行,做了几套题之后然后重新看课本,对这本书进行了一下小小的总结,把一些基本的知识画了如下思维导图:
(双击图片或者点击此处查看大图)
基本概念主要是对这本书的总括,数据结构的逻辑结构的表现主要是集合、线性表、树形和图,查找和排序都是对数据的操作。
说一下图中不够详细的部分,图的最小生成树是图所有生成树种权总和最小的生成树,Prim算法是先找一个顶点,然后找和这个顶点最近的一个点连接,再以这两个点为中心,找离这两个点最近的点,依次类推直到所有的点全部连接为止。卡鲁斯卡尔算法(Kruska)是依次找最短距离的点连接起来直到所有的点都连接为止,
链接表的实现中,这几种方法都是让给定数求余之后根据余数确定位置,不同的是求余冲突后数的处理。线性探测法如果冲突让余数+1,+2……直到不冲突为止,二次探测法是将余数依次做如下运算,+1^2,-1^2,+2^2 ,-2^2……链地址法直接将冲突的数字链接到前一个数字后面就可以,多重散列法是设置多个散列函数,公共溢出法增加了一个溢出表,将冲突的全部放到溢出表中。
排序算法看软考书上有一个表格给我们总结的特别详细,借用一下:
对于排序明白了基本的原理之后再去分析时间复杂度,像直接插入排序,简单选择,冒泡排序感觉他们移动是比较顺序的,n(n-1)\2,它的复杂度为n^2,如果移动的比较复杂就是nlogn(n倍的以2为底n的对数,上面的表格也是这样,不是nlogn),剩下一个是基数排序也好说了。
写在后面的话:
1.总结完之后对于这本书的基本内容了解了,感觉信心增加了不少,接下来我还需要做的就是最后大题算法了,当一些基本的知识掌握了之后了解代码的思想,相信进行算法代码的编写也不会难的。
2.对于思维导图继续抽象和总结的能力还欠缺,上面的图枝蔓可能有些多,如有任何建议,欢迎指正。