数据结构与算法分析 收获总结 第1章 数据结构和算法

这学期学这门课到现在为止,还是感觉难度很大,当然老师可能讲得也有点偏离书本,有时候听得有点蒙。
干脆来根据教材写个总结,用的教材是 《数据结构与算法分析》C++ 第3版 电子工业出版社
第1章 数据结构和算法
I.高效率 所要求的资源限制内将问题解决好
学会几步:
1.分析问题确定必须支持的操作,如插入一个数据项?删除?指定查找?要根据问题有想法
2.衡量-每种操作的资源限制
3.选择最接近这些代价的数据结构:栈?队列?二叉树?链表?
注意代价与效率!
II.线性表数据类有两种传统的实现方式:链表(Linked List)数组(array-based list)
III.抽象数据类型(ADT)abstract data type:指的是数据结构作为一个软件构件的实现,它的接口利用一个类型和类型上的一组操作
我理解ADT就是一个基本的模板,里面有函数的命名(大多用虚函数,所以并未实现),需要有哪些操作?感觉提供了一个实现的方向
数据结构是ADT的实现
数据项:逻辑形式:ADT 物理形式:数据结构中对数据项的实现
IV.设计模式:
1.享元模式:大概就是多个对象他们的包含信息,担任角色一样,但从不同地方访问,从概念上也不一样,就会有太多冗余信息,所以希望通过享元模式来共享空间减少内存消耗,即对一个对象建立单一对象,每一个需要该对象的地方,都引用这个单一对象,对这个对象的多个引用实例称为享元。
2.访问者模式:比如编写一个通用的遍历函数,将操作传入就很方便的在每个结点上执行。而不需要每个功能操作都独立地编写遍历再进行操作,在5.2树的遍历 11.3图的遍历 会用到
3.组合模式:页面编辑中,页面上的各种对象,只有有限的若干种动作要执行。增加一种可以应用到全部对象上的新动作,则并不需要修改已有动作的任何代码,麻烦的是每添加一种一个新的对象类型,就需要将已有的每一种动作的代码都修改一遍。这是一种模式
还有一种模式,各种对象自身已经包含了各种可能的需要动作,处理,每种子类都有执行各种动作的代码,之后如果要对一组对象执行一个操作,只需要调用这组对象的第一个对象并且指定动作。但如果要添加一种新的动作,就需要修改每种对象的代码,不过添加一种新的对象就变得容易得多,这就是组合模式。
4.策略模式:将封装一系列可替换的方法,这些可变的方法会在一个更大的行为中执行。

V.问题:一个需要完成的任务
VI.算法:解决问题的一种方法或者一个过程。包含性质:
1.正确性
2.具体步骤,意味着描述行为对于完成算法的人或机器是可读的,可执行的
3.确定性,算法描述的下一步应执行的步骤必须明确。
4.有限性,一个算法必须由有限步组成
5.可终止性,不可进入死循环
VII.程序:使用某种程序设计语言对一个算法的具体实现

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。 算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。

第1章 就是开了一个头,算是对这门课的一个引导,一些概念也可以了解下

你可能感兴趣的:(数据结构)