数据结构第三课笔记----------------狄泰软件学院

程序的灵魂

引出问题
程序是否越短越好?程序是不是别人读不懂就证明自己很厉害?
数据结构静态的描述了数据元素之间的关系。
高效的的程序需要在数据结构的基础上选择合适的算法。
算法是特定问题求解的步骤,在计算机中表现为指令的有限序列。
算法是独立存在的的一种解决问题的方法和思想,对于算法而言,思想最重要。
算法的特性:
输入:算法具有0个或多个输入。
输出:算法至少有一个或多个输出。
有穷性:算法在有限的步骤之后会自动结束而不会无限循环。或者可以说是在可接受的范围内能自动结束。
确定性:算法的每一步都会都有确定的的含义,不会出现二义性。
可行性:算法的每一步都是可行的。
正确性:
(1)算法对于合法数据能得到正确的结果。
(2)算法能处理非法的数据,并且得到合理的结果。
(3)算法对于边界数据和压力数据都能得到满足要求的结果。
注意:正确性是算法最需要满足的基本准则,但是作为计算机程序,不可能无限制的满足这个条件。
可读性:算法要方便阅读,理解和交流。
健壮性:算法不应该出现莫名其妙的结果。
性价比:你用最少的资源得到最满意的结果。
注意:现在的程序要看重可读性,因为代码不只是用来给计算机看到,并且也是用来给人看的,可读性好能便于他人理解。
总结
算法是为了解决实际问题而存在。
数据结构是算法处理问题的载体。
数据结构与算法相辅相成,共同解决问题。
程序的灵魂: 程序 = 数据结构 + 算法

原文地址:http://blog.51cto.com/13563176/2060195

时间: 2024-08-25 06:22:52

数据结构第三课笔记----------------狄泰软件学院的相关文章

数据结构第四课笔记------------狄泰软件学院

程序的效率 问题:如果两个算法都符合功能性需求,那工程中最关心的其他特性是什么?如何比较评判?性价比(效率)是工程中最关注的的算法附加特性!算法效率的度量1.事后统计法:比较不同算法对同一组输入数据的处理时间.缺陷:(1)为了获得不同算法必须编写相应程序(2)运行时间严重依赖硬件以及运行时的环境因素(3)算法的测试数据选取困难2.事前分析估算:依据统计的方法对数据进行估算影响算法效率的主要因素:(1)算法采用的策略和方法(2)问题的输入规模(3)编译器所产生的代码(4)计算机执行速度 int f

数据结构第二课笔记--------------狄泰软件学院

数据的艺术 程序设计的挑战(1)利用计算机解决生活的问题(2)生活中的不同个体存在联系,且关系复杂(3)如何用计算机程序描绘生活中的个体以及个体之间的联系 计算机能接受处理的是数据,我们可以将数据写入到程序里,然后计算,因此,我们要考虑在程序里面如何用数据来描述客观的事物,来描述生活里面的个体,描述个体之间的关系. 数据的概念数据在计算机里就是程序的操作对象,可以描述客观事物.数据的特点(1)可以输入到计算机(2)可以被计算机程序处理 微观角度数据的新概念(1)数据元素:组成数据的基本单位(2)

数据结构第六课------------狄泰软件学院

图片出自狄泰软件学院工程里面一般采用时间复杂度在 O(n^3) 之前的算法.算法的最好与最坏情况:一般推断算法的最坏情况,当程序在最坏情况都能满足要求是,说明在最好和平均情况都能满足要求. 算法的空间复杂度 (Space Complexity)定义:S(n) = S(f(n))n为算法的问题规模f(n)为空间使用函数,与n有关推导时间复杂度的方法同样适用于空间复杂度如当算法所需要的空间复杂度是常数时,空间复杂度为S(1)S(n+4) = S(n)空间与时间的比较(1)多数情况下,算法的时间复杂度

VC++编程之第三课笔记——MFC窗口创建过程以及窗口类的封装

第三课 MFC窗口创建过程以及窗口类的封装 MFC的每一个类都是以C开头的,表明这是一个Class. 工程包含(单文档) 创建工程名为aaa的工程(单文档)时,在类视图中可看见五个类: CAboutDlg CMainFrame CAaaApp CAaaDoc CAaaView 其中: 类CAboutDlg继承自CDialog类,对话框的类 类CMainFrame继承自CFrameWnd类,创建整个程序的框架窗口 类CAaaApp继承自CWinApp类,创建唯一的应用程序对象 类CAaaDoc继承

第三课、初识程序的灵魂------------------------狄泰软件学院

一.初识程序的灵魂 1.数据结构静态描述了数据元素之间的关系 2.高效的程序需要在数据结构的基础上设计和选择算法 高效的程序需要: (1).恰当的数据结构 (2).合适的算法 3.算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列 (1).算法是独立存在的一种解决问题的方法和思想 (2).对于算法而言:语言不重要,重要的是思想 4.算法的特性 (1).输入:算法具有0个或者多个输入 (2).输出:算法至少有一个或者多个输出 (3).有穷性:算法在有限的步骤之后会自动结束而不会自动循环

第十三课、类族的结构进化-------------------狄泰软件学院

一.遵循经典设计原则 DTLib中的所有类位于单一继承树 IvalidOperationEXception是新增的异常类,描述某些成员函数在状态不对的时候被抛出 二.改进的关键点 1.EXception类继承自Object类:堆空间中创建异常对象失败时,返回NULL指针,用的是自己的new版本 更改: 2.新增IvalidOperationEXception异常类:成员函数调用时,如果状态不正确则抛出该异常 增加: //非法操作异常 class IvalidOperationEXception:

第十一课、异常类的构建-------------狄泰软件学院

一.自定义异常类 1.异常的类型可以是自定义的类类型 2.对于类类型的匹配依旧是之上而下的严格匹配 3.赋值兼容性原则在异常匹配中依然适用 所以要 (1).匹配子类异常的catch放在上部 (2).匹配父类异常的catch放在下部 4.异常类是数据结构所依赖的"基础设施"(现代c++库也必然包含充要的异常类族) 二.一步步打造自己的异常类 1.首先是抽象类EXception的编写,既然是抽象类,必然含有纯虚函数,通常的做法都是将析构函数作为纯虚函数 头文件:接口定义 class Exc

第十六课、顺序存储结构的抽象实现----------狄泰软件学院

一.课程目标 1.完成顺序存储结构的抽象实现,既然是抽象实现,自然就是抽象类,不能生成对象 (1).抽象类模板,存储空间的位置和大小由子类完成  (2).这里只实现顺序存储结构的关键操作(增.删.查等) (3).提供数组操作符,方便快速获取元素(要提供const版本的,方便const对象调用) 二.具体实现 这里需注意几点 (1).这里将capacity()函数设置为纯虚函数,说明在这里还不需要实现它,将其留到子类中在实现. (2).数组操作符的返回值一个是引用一个是值,是因为const对象不能

第十四课、线性表的本质和操作-----------------狄泰软件学院

一.线性表(List)的表现形式 1.零个或者多个数据元素组成的集合 2.数据元素在位置上是有序排列的 3.数据元素的个数是有限的 4.数据元素的类型必须相同 二.线性表(List)的抽象定义 1.线性表是具有相同类型的n(>=0)个数据元素的有限序列 {a0,a1,a2,....an-1} ai是表项(数据元素),n是表长度 三.线性表(List)的性质 1.a0为线性表的第一个元素,只有一个后继 2.an-1为线性表的最后一个元素,只有一个前驱 3.除a0和an-1外的其它元素ai,既有前驱