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

程序效率越高越好,并不是越短越好。在某些场合下,我们需要写出别人看不懂的算法最好,但是在一个团队开发中,算法可读性应该尽可能高。

算法的定义
算法是特定问题求解步骤的描述
在计算机中表现为指令的有限序列
算法是独立存在的一种解决问题的方法和思想。
对于算法而言,语言并不重要,重要的是思想

算法的特性
输入
   算法具有0个或多个输入
输出
   算法至少有1个或多个输出
有穷性
   算法在有限的步骤之后会自动结束而不会无限循环
确定性
   算法中的每一步都有确定的含义,不会出现二义性
可行性
   算法的每一步都是可行的

算法设计的准则
正确性
1.1. 算法对于合法数据能够得到满足要求的结果
2.2. 算法能够处理非法输入,并得到合理的结果
3.3. 算法对于边界数据和压力数据都能得到满足要求的结果
注意:
正确性是算法最需要满足的基本的准则,但是作为计算机程序,不可能无限制的满足这条准则 。

算法设计的准则
可读性
   算法要方便阅读,理解和交流
健壮性
   算法不应该产生莫名其妙的结果
高性价比
   利用最少的时间和资源得到满足要求的结果
注意:
算法可读性是最容易被忽视的,然而,程序是写给人看的,而不是计算机。

时间: 2024-12-10 17:12:38

第三课:程序的灵魂-算法的相关文章

数据-第3课-程序的灵魂-算法

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

【程序设计基础】第四章 程序的灵魂------算法

对数据的描述 在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure) 对操作的描述(算法Algorithm) 程序=算法+数据结构 程序=算法+数据结构+程序设计方法+语言工具和环境 一.算法的概念 1.数值运算算法 2.非数值运算算法 二.算法的特性 1.有穷性 2.确定性 3.有零个或多个输入 4.有一个或多个输出(非必要,非数值运算的程序,只是完成一个处理,不必要将结果展示) 5.有效性 三.表示算法 自然语言 流程图(传统流程图.结构化流程图) 顺序结构.选

程序的灵魂-算法

Nikilaus Wirth提出的公式:程序=算法+数据结构 教材认为:程序=算法+数据结构+程序设计方法+语言工具和环境. 算法的概念 算法指计算机解决问题的方法. 算法分为数值算法和非数值算法. 算法的特性 有穷性 有效性 确定性 零个或多个输入 一个或多个输出 使用流程图表示算法 传统流程图 N-S流程图 三种基本结构 顺序结构 选择结构 循环结构 结构程序设计的方法 自顶向下,逐步细化,模块化设计,机构化编程 自底向上,逐步增加,模块化设计,结构化编程

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

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

【C++探索之旅】第一部分第三课:第一个C++程序

 内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适合自己的一个IDE(Integrated Development Environment,就是"集成开发环境"的意思). 如果你真的要开始在Linux下编写程序,除了使用IDE之外(IDE集成了文本编辑器,编译器,调试器,运行程序等),也可以选择另一种难一些的方式:自己用某一种文本编辑

【C语言探索之旅】 第三课:你的第一个程序

内容简介 1.课程大纲 2.第一部分第三课:你的第一个程序 3.第一部分第四课预告:变量的世界 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算符 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写

第三课 文件系统(上)

unix_c_03.txt====================第三课 文件系统(上)====================一.系统调用------------应用程序 -----------+| |v |各种库 |(C/C++标准库.Shell命令和脚本. |X11图形程序及库) || |v |系统调用 <----------+(内核提供给外界访问的接口函数,调用这些函数将使进程进入内核态)|v内核(驱动程序.系统功能程序)1. Unix/Linux大部分系统功能是通过系统调用实现的.如o

【C语言探索之旅】 第二部分第三课:数组

内容简介 1.课程大纲 2.第二部分第三课: 数组 3.第二部分第四课预告:字符串 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动态分配

BeagleBone Black 板第三课:Debian7.5系统安装和远程控制BBB板

BBB板第三课:Debian7.5系统安装和远程控制BBB板 因为BBB板系统是Debian 7.4,据说使用Debian系统可以实现很多BBB板的无缝连接,可以更好的学习和控制BBB板,所以就决定下载Debian7.5系统安装,采用虚拟机的安装方式. 一.系统安装 1.我下载了Debian7.5 32位系统,有三张DVD盘,网上有不少安装资料了,我这里就不详细介绍安装过程了.不过有一点可能很多人都会遇到的问题,就是安装过程中提示插入光盘的问题.虚拟机是Vmware workstation 10