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

一、初识程序的灵魂

1、数据结构静态描述了数据元素之间的关系

2、高效的程序需要在数据结构的基础上设计和选择算法

高效的程序需要:

(1)、恰当的数据结构

(2)、合适的算法

3、算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列

(1)、算法是独立存在的一种解决问题的方法和思想

(2)、对于算法而言:语言不重要,重要的是思想

4、算法的特性

(1)、输入:算法具有0个或者多个输入

(2)、输出:算法至少有一个或者多个输出

(3)、有穷性:算法在有限的步骤之后会自动结束而不会自动循环

(4)、确定性:算法的每一步都会有确定的含义,不会出现二义性

(5)、可行性:算法的每一步都是可行的

(6)、正确性:

A、算法对于合法数据能够得到满足要求的结果

B、算法能够处理非法输入,并得出合理的结果

C、算法对于边界数据和压力数据都能得到满足要求的结果

注意:正确性是算法最需要满足的基本准则,但是作为计算机程序,不可能无限制地满足这条准则

(7)、可读性:算法要方便阅读,理解和交流

(8)、健壮性:算法不应该产生莫名其妙的结果

(9)、性价比:利用最少的资源得到满足的结果

二、小结

(1)、算法为了解决实际问题而存在

(2)、数据结构是算法处理问题的载体

(3)、数据结构与算法相辅相成,共同解决问题:程序 = 数据结构 + 算法

时间: 2024-10-10 02:18:44

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

第三课:程序的灵魂-算法

程序效率越高越好,并不是越短越好.在某些场合下,我们需要写出别人看不懂的算法最好,但是在一个团队开发中,算法可读性应该尽可能高. 算法的定义 算法是特定问题求解步骤的描述 在计算机中表现为指令的有限序列算法是独立存在的一种解决问题的方法和思想.对于算法而言,语言并不重要,重要的是思想 算法的特性 输入 算法具有0个或多个输入 输出 算法至少有1个或多个输出 有穷性 算法在有限的步骤之后会自动结束而不会无限循环 确定性 算法中的每一步都有确定的含义,不会出现二义性 可行性 算法的每一步都是可行的

第九课、智能指针示例------狄泰软件学院

一.内存泄漏(臭名昭著的bug) (1).动态申请堆空间,用完后不归还 (2).c++语言中没有垃圾回收机制 (3).指针无法控制所指向的堆空间生命周期(如局部指针生命周期结束了堆空间的生命周期还未结束) 二.智能指针 1.当代c++平台的智能指针 (1).指针生命周期结束时主动释放堆空间 (2).一片堆空间最多只能由一个智能指针标识 (3).杜绝指针运算和指针比较 2.智能指针的设计方案 (1).通过类模板描述指针的行为:能够定义不同类型的指针变量 (2).重载指针特征操作符(->和*):利用

03初识程序的灵魂

原文:https://www.cnblogs.com/wanmeishenghuo/p/9484777.html 内容参考: 狄泰软件学院相关教程 程序并不是越短越好. 数据结构静态的描述了数据元素之间的关系. 高效的程序需要在数据结构的基础上设计和选择算法 高效的程序包括:恰当的数据结构和合适的算法 算法是特定问题的求解步骤,在计算机中表现为指令的有限序列 算法是独立存在的一种解决问题的方法和思想 对于算法而言,语言并不重要,重要的是思想 算法的特性: 1.输入:算法具有0个或者多个输入 2.

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

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

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

程序的灵魂 引出问题程序是否越短越好?程序是不是别人读不懂就证明自己很厉害?数据结构静态的描述了数据元素之间的关系.高效的的程序需要在数据结构的基础上选择合适的算法.算法是特定问题求解的步骤,在计算机中表现为指令的有限序列.算法是独立存在的的一种解决问题的方法和思想,对于算法而言,思想最重要.算法的特性:输入:算法具有0个或多个输入.输出:算法至少有一个或多个输出.有穷性:算法在有限的步骤之后会自动结束而不会无限循环.或者可以说是在可接受的范围内能自动结束.确定性:算法的每一步都会都有确定的的含

电脑小白学习第三课---安装程序(QQ为例)

我们在安装程序的时候,有时会自动给我们安装一些其他的没用的软件或者有些是流氓软件.我们安装程序时不只是单纯的点击下一步,下一步.下面演示如何去安装一个程序,以qq的安装为例.首先下载安装包.下载后,直接双击安装包,开始安装.首先看一下自定义选项.(一般程序启动都会让选择安装路径等,都看一下,是否有包含其他不相关的软件)设置安装路径,及其他选项,可以不让添加到快速启动栏,不让开机启动等.注意下面这个,在完成安装时,把不需要的都取消掉.否则会把不相关的程序都安装上啦.最后一步很关键.一定要注意. 原

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

一.线性表(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,既有前驱

第五十八课、自定义模型类(上)------------------狄泰软件学院

 一.自定义模型类 1.QStandardItemModel是一个通用的模型类 (1).能够以任意的方式组织数据(线程.非线性) (2).数据组织的基本单位为数据项(QStandardItem) (3).每一个数据项能够存储多个具体数据(附加数据角色) (4).每一个数据项能够对数据状态进行控制(可编辑.可选...) 2.Qt中的通用模型类QStandardItemModel (1).QStandardItemModel继承自抽象的模型类QAbstractItemModel (2).QStand

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

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