算法和程序都是指令的有限序列
计算机算法定义和特征和描述方法

计算机算法定义和特征和描述方法
一、定义:在计算机中表现为指令的有限序列,其中每条指令表示一个或多个操作。
二、算法的描述:类C语言介于伪码语言和程序设计语言之间的一种表示形式,保留了C语言的精华,不拘泥于C语言的语法细节,同时也添加了一些C++的成分。
三、算法的特性:
1、有穷性:算法在执行有限步骤之后,自动结束而不会出现无限循环,并且每一个步骤都在可接受的时间范围内完成。
当然这里的有穷并不是纯数学意义的,而是在实际应用中合理的、可以接受的“边界”。
2、确定性:算法的每一个步骤都有确定的含义,不会出现二义性(不会有歧义)。
3、可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
4、输入:一个算法有零个或多个输入。
当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。
5、输出:一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果,无输出的算法没有任何意义。
当用函数描述算法时,输出多用返回值或引用类型的形参表示。
计算机软件技术基础复习题和思考题答案

计算机软件技术基础复习题和思考题答案1.5.1 复习题1. 解释计算机程序的概念。
计算机程序(computer programs),简称程序,是指计算机的指令序列。
2. 什么是源代码程序?源代码是指以程序设计语言编写的、可读的语句和声明的集合,程序设计人员的工作就是使用程序设计语言编写源代码,源代码经过编译后转变为计算机可以执行的程序。
3. 什么是可执行程序?可执行程序是指包含了计算机可以直接执行的指令的文件。
为了与源代码相区别,可执行程序又被称为二进制代码。
4. 什么是计算机软件技术?计算机软件技术是与软件的设计、实施和使用相关的多种技术的统称。
软件的设计与实施涉及到程序设计语言、算法和数据结构、数据库系统、多媒体、软件工程等技术,软件的使用涉及到质量、可靠性、专利、知识产权、道德、法律等管理和技术。
5. 如何对软件进行分类?可以根据软件的功能进行分类,也可以根据软件的不同开发方式进行划分,还可以从软件的使用方式进行分类。
根据软件的功能来划分是一种主要的分类方式,可以把软件分为系统软件、编程软件和应用软件3大类型。
6. 什么是系统软件?系统软件(system software)指管理和控制计算机硬件、使计算机工作的软件。
系统软件是一种非常重要的软件类型,它为用户提供了一种操作计算机硬件的便捷方法,为其他程序提供了运行的基础。
7. 常见的系统软件有哪些?根据系统软件的功能特点,可以继续划分为操作系统、设备驱动程序、实用工具以及其他系统软件。
8. 什么是操作系统?操作系统(operating system,OS)是位于计算机系统中的硬件和软件之间的接口,负责管理和协调计算机硬件的操作和计算机有限资源的共享。
9. 列出3个典型的操作系统。
主要的操作系统包括微软公司的Windows系列操作系统、Unix和类Unix操作系统、苹果公司的Mac OS X操作系统、Linux操作系统等。
任意列出3个即可。
10. 什么是编程软件?编程软件(programming software)又称为编程工具(programming tool)或软件开发工具(software development tool),是一种软件开发人员用于创建、调试、维护其他程序和应用软件的软件工具。
数据结构题库

shitiimga b c d shitidaan数据结构是( ) 一种数据类型 数据的存储结构 一组性质相同的数据元素的集合相互之间存在一种或多种特定关系的数据元素下列说法错误的是()数据是指描述客观事物的特征数据元素是数据的基本单位数据在计算机存储器内的存在形数据处理方式总是与数据的表示形式相联系数据的逻辑结构可分为()线形结构和树形结构线形结构与非线形结构线形结构与星形结构星形结构与树形结构下列关于算法说法错误的是()算法是对特定问题求解步骤的算法是指令的有限序列算法是在存储结构上的操作实现算法就是数学中的计算方法下列不属于算法的性能标准的是可行性正确性可读性健壮性算法的效率主要是指算法的空间效率算法的时间效率算法的空间效率和时间效率以上说法都不对在数据结构的讨论中把数据结构从逻辑上分为内部结构与外部结构静态结构与动态结构紧凑结构与非紧凑结构线性结构与非线性结构 指出下列程序段的时间复杂度for(i=1;i<=n;i++) for(j=1;j<=n;j++O(n)O(n*n)O(1)O(0)下列关于线性表的说法不正确的是存在唯一一个被称为“第一个存在唯一一个被称为“最后集合中的每一个元素均有前驱除最后一个元素外,每个元素都有一个后继下列关于线性表的操作说法不正确的是可以访问表中的元素可以查找可以删除不可以修改下列属于插入排序的是( )希尔排序归并排序冒泡排序选择排序下列属于交换排序的是( )希尔排序归并排序快速排序选择排序下列属于交换排序的是( )希尔排序冒泡排序归并排序选择排序下列属于选择排序的是( )希尔排序冒泡排序归并排序堆排序下列排序方法中时间复杂度为O(n 2)直接选择排序堆排序归并排序希尔排序下列排序方法中时间复杂度为O(n㏒2n)的是( )直接插入排序直接选择排序归并排序折半插入排序下列排序方法中时间复杂度不是为O(n㏒2n)的是( )直接插入排序堆排序归并排序希尔排序线性表是具有N个()的有限序列表元素字符数据元素数据项 下面叙述正确的是算法的有穷性是指算法必须能算法的空间复杂度是指算法 算法的执行效率与数据的存储结构无关以上三种描述都不对 以下数据结构中不属于线性数据结构的是 队列线性表二叉树栈在一棵二叉树上第5层的结点数最多是6163215get(head,i)在单链表中的作用是读取表结点求表长按值查找插入结点insert(head,ElemType x,int i)在单链表中的作用是读取表结点求表长按值查找插入结点单链表中删除结点的操作是get(head,i)delete(head,i)locate(head,x)length(head)单链表中按值查找的操作是get(head,i)delete(head,i)locate(head,x)length(head)单链表中求表长的操作是get(head,i)delete(head,i)locate(head,x)length(head)单链表中初始化--置空表的操作是setnull(head)delete(head,i)locate(head,x)length(head)双链表说法错误的是又称为双向链表每个结点有两个域每个结点有三个域每个结点有一个数据域有关循环链表说法不正确的是单循环链表是其中的一种双循环链表是其中的一种多循环链表是其中的一种可分成单循环和双循环两种单循环链表与单链表的主要区别是单循环链表中尾结点的指针域单链表中尾结点的指针域不单链表能构成一个环以上说法都不对下列说法正确的是时间性能是指存储空间的利用空间性能是指在一种存储结空间性能是指存储空间的利用效以上说法都不对采用线性链表表示一个向量时,要求占用的存储空间地址必须是连续的可连续可不连续 部分地址必须是连续的一定是不连续的在一个单链表中,若q 结点是p 结点的前驱结点,若在q 与p 之间插入结点s ,则执行 s →link = p →link; p →link = s; p →link = s; s →link = q;p →link = s →link; s →link = p; q→link = s; s→link = p; 一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为2,1,3,41,2,3,44,3,2,13,4,2,1一个向量第一个元素的存储地址是100,每个元素的长度为2,则第五个元素的地址是110108100120 下列有关栈的说法错误的是栈是一种先进先出的线性表栈只能在一端进行插入或删栈中允许进行插入、删除操作的栈是一种后进先出的线性表输出栈中元素的基本操作是display(s)gettop(s)pop(s)push(s,x)读取栈中元素的基本操作是display(s)gettop(s)pop(s)push(s,x)入栈的操作是display(s)gettop(s)pop(s)push(s,x)出栈的操作是display(s)gettop(s)pop(s)push(s,x)初始化栈的操作是Initstack(s)gettop(s)pop(s)push(s,x)有关队列的说法错误的是队列是一种操作受限的线性表队列是一种操作不受限的线队列的插入和删除操作在表的不队列是一种先入先出的线性表初始化队列的操作是initqueue(Q)enteque(Q)deleteque(Q)gethead(Q)入队列的操作是initqueue(Q)enteque(Q)deleteque(Q)gethead(Q)出队列的操作是initqueue(Q)enteque(Q)deleteque(Q)gethead(Q)取队头元素的操作是initqueue(Q)enteque(Q)deleteque(Q)gethead(Q)判队空的操作是initqueue(Q)enteque(Q)empty(Q)gethead(Q)display(Q)在队列中的作用是初始化输出队列中的元素出队列入队列enter(Q,x)表示将元素X插入到队列Q中将元素Q插入到队列X中将元素X从队列Q中删除以上说法都不对下列有关队列的链式存储说法错误的是队列的链式存储是由结点构成只允许在单链表的表头进行只允许在单链表的表尾进行插入以上说法都不对用单链表表示的链式队列的队头在链表的()位置链头链尾链中以上说法都不对下列有关串的说法错误的是串是有一个或多个字符组成的仅由一个空格组成的串为空串中任意连续的字符组成的子序字符在串中的序号为字符在串中的子串串赋值的操作算法是strassigh(s,t)strlength(s)strcmp(s1,s2)strcopy(s,t)求串长的操作算法是strassigh(s,t)strlength(s)strcmp(s1,s3)strcopy(s,t)串比较的操作算法是strassigh(s,t)strlength(s)strcmp(s1,s4)strcopy(s,t)串复制的操作算法是strassigh(s,t)strlength(s)strcmp(s1,s5)strcopy(s,t)串连接的操作算法是strconcat(s1,s2)substr(s,i,k)strIndex(s,t)strinsert(s,i,t)求子串的操作算法是strconcat(s1,s3)substr(s,i,k)strIndex(s,t)strinsert(s,i,t)子串定位的操作算法是strconcat(s1,s4)substr(s,i,k)strIndex(s,t)strinsert(s,i,t)子串插入的操作算法是strconcat(s1,s5)substr(s,i,k)strIndex(s,t)strinsert(s,i,t)子串替换的操作算法是strdelete(s,i,t)strreplace(s,t,r)strdisplay(s)strcreate(h,n)串显示的操作算法是strdelete(s,i,t)strreplace(s,t,r)strdisplay(s)strcreate(h,n)串创建的操作算法是strdelete(s,i,t)strreplace(s,t,r)strdisplay(s)strcreate(h,n)子串删除的操作算法是strdelete(s,i,t)strreplace(s,t,r)strdisplay(s)strcreate(h,n)数组通常采用的存储方式是链式存储顺序存储链式或顺序存储以上说法都不对数组a[3][5]中有多少个元素1581012关于树的说法错误的是树是由多个结点构成的有限集树只有一个根结点仅有一个结点的树是最小树树中结点较多时每个结点都是某一颗子树的根下列不是树的表示方法的是倒悬树法文氏图法括号法图表法下列属于错误的是树中每个结点具有的子树个数度为0的结点称为叶子结点度为0的结点称为分支结点以上说法都不对假定一个链式队列的队头和队尾指针分别为front 和rear ,则判断队空的条件为front==rear front! =NULL rear! =NULL front ==NULL设有两个串t 和p ,求p 在t 中首次出现的位置的运算叫做 求子串模式匹配 串替换串连接下面程序段的时间复杂度为( ) for (int i=0;i<m;i++) for (int j=0;j<n;j++) a[i][j]=i*j;O(m 2)O(n 2)O(m*n) O(m+n)线性表采用链式存储结构时,要求内存中可用存储单元的地址必须是连续的部分地址必须是连续的一定是不连续的连续或不连续都可以一个栈的入栈序列是a,b,c,d,e,则出栈不可能的输出序列是edcba decba dceab abcde 已知某二叉树的后序遍历序列是dabec ,中序遍历序列是debac ,它的前序遍历序列是acbed decab deabc cedba 按照二叉树的定义,具有3个结点的二叉树的形态有几种3456对线性表进行二分查找时,要求线性表必须以顺序方式存储以链接方式存储以顺序方式存储,且数据元素有以链接方式存储,且数据方式有序图的广度优先搜索类似于树的( )次序遍历先根中根后根层次具有n 个顶点的有向无环图最多可包含( )条有向边。
计算机算法设计五大常用算法的分析及实例

计算机算法设计五⼤常⽤算法的分析及实例摘要算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。
也就是说,能够对⼀定规范的输⼊,在有限时间内获得所要求的输出。
如果⼀个算法有缺陷,或不适合于某个问题,执⾏这个算法将不会解决这个问题。
不同的算法可能⽤不同的时间、空间或效率来完成同样的任务。
其中最常见的五中基本算法是递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法。
本⽂通过这种算法的分析以及实例的讲解,让读者对算法有更深刻的认识,同时对这五种算法有更清楚认识关键词:算法,递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法AbstractAlgorithm is the description to the problem solving scheme ,a set of clear instructions to solve the problem and represents the describe the strategy to solve the problem using the method of system mechanism . That is to say, given some confirm import,the Algorithm will find result In a limited time。
If an algorithm is defective or is not suitable for a certain job, it is invalid to execute it. Different algorithms have different need of time or space, and it's efficiency are different.There are most common algorithms: the recursive and divide and conquer、dynamic programming method、greedy algorithm、backtracking、branch and bound method.According to analyze the five algorithms and explain examples, make readers know more about algorithm , and understand the five algorithms more deeply.Keywords: Algorithm, the recursive and divide and conquer, dynamic programming method, greedy algorithm、backtracking, branch and bound method⽬录1. 前⾔ (4)1.1 论⽂背景 (4)2. 算法详解 (5)2.1 算法与程序 (5)2.2 表达算法的抽象机制 (5)2.3 算法复杂性分析 (5)3.五中常⽤算法的详解及实例 (6)3.1 递归与分治策略 (6)3.1.1 递归与分治策略基本思想 (6)3.1.2 实例——棋盘覆盖 (7)3.2 动态规划 (8)3.2.1 动态规划基本思想 (8)3.2.2 动态规划算法的基本步骤 (9)3.2.3 实例——矩阵连乘 (9)3.3 贪⼼算法 (11)3.3.1 贪⼼算法基本思想 (11)3.3.2 贪⼼算法和动态规划的区别 (12)3.3.3 ⽤贪⼼算法解背包问题的基本步骤: (12)3.4 回溯发 (13)3.4.1 回溯法基本思想 (13)3.3.2 回溯发解题基本步骤 (13)3.3.3 实例——0-1背包问题 (14)3.5 分⽀限界法 (15)3.5.1 分⽀限界法思想 (15)3.5.2 实例——装载问题 (16)总结 (18)参考⽂献 (18)1. 前⾔1.1 论⽂背景算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。
机器学习算法介绍

机器学习算法介绍什么是程序(Program)计算机程序,是指为了得到某种结果⽽可以由计算机(等具有信息处理能⼒的装置)执⾏的代码化指令序列(或者可以被⾃动转换成代码化指令序列的符号化指令序列或者符号化语句序列)。
通俗讲,计算机给⼈⼲活,但它不是⼈,甚⾄不如狗懂⼈的需要(《⼩⽺肖恩》⾥的狗是多么聪明可爱⼜忠诚于主⼈)。
那怎么让它⼲活呢,那就需要程序员⽤某种编程语⾔来写程序,编程语⾔就是计算机能理解的语⾔,计算机可以执⾏这些程序(指令),最终完成任务。
下边的C++程序是完成n的阶乘:int n = std::atoi(argv[1]);//求n的阶乘double result = 1.0;for (int i = 2; i <= n; i++) {result *= i;}std::cout << n << "的阶乘是:" << result << std::endl;什么是算法(Algorithm)算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表⽰⼀个或者多个操作。
举个简单的例⼦,并且⼤家⽣活中都能⽤得上的。
现在做个⼩游戏,A在纸上随机写了⼀个1到100间的整数,B去猜,猜对的话游戏结束,猜错的话A会告诉B猜的⼩了还是⼤了。
那么B会怎么做呢,第⼀次肯定去猜50,每次都猜中间数。
为什么呢?因为这样最坏情况下(log2100)六七次就能猜到。
这就是⼆分查找,⽣活中可能就会⽤得到,⽽在软件开发中也经常会⽤得到。
再来看⼀个稍微复杂⼀点点的算法,【快速排序】,⾯试中考的频率⾮常⾼⾮常⾼,甚⾄可以说是必考。
什么是机器学习算法(Machine Learning)机器学习的定义《机器学习》书中的定义:关于某类任务 T 和性能度量P,如果⼀个计算机程序能在T上以P衡量的性能随着经验E⽽⾃我完善,那么我们称这个计算机程序在从经验E中学习。
程序设计基础学习知识(学习知识重点)

第三部分程序设计基础3.1 程序、程序设计、程序设计语言的定义⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。
⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。
程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。
程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。
⑶程序设计语言:程序设计语言用于书写计算机程序的语言。
语言的基础是一组记号和一组规则。
根据规则由记号构成的记号串的总体就是语言。
在程序设计语言中,这些记号串就是程序。
程序设计语言有3个方面的因素,即语法、语义和语用。
3.2 高级语言和低级语言的概念及区别⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。
它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。
⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。
机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。
⑶区别:高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。
越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。
而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。
南邮数据结构答案

第1 章绪论一、基础题1. A2. C3. C4. A5. C二、扩展题1.数据是计算机加工处理的对象;数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理;数据项是组成数据元素的、不可分割的最小单位。
2.数据结构是按某种逻辑关系组织起来的数据元素的集合,使用计算机语言描述并按一定的存储方式存储在计算机中,并在其上定义了一组运算。
3.集合结构、线性结构、树形结构和图形结构。
集合结构中,元素之间没有关系;线性结构中,元素之间存在一对一的关系;树形结构中,元素之间存在一对多的关系,其中最多只有一个元素没有前驱元素,这个元素就是根;图形结构中,元素之间存在多对多的关系。
4.顺序存储、链式存储、索引存储和散列存储。
5.一个算法是对特定问题的求解步骤的一种描述,是指令的有限序列。
其特征包括:➢输入:算法有零个或多个输入➢输出:算法至少产生一个输出➢确定性:算法的每一条指令都有确切的定义,没有二义性。
➢能行性/可行性:可以通过已经实现的基本运算执行有限次来实现➢有穷性:算法必须总能在执行有限步之后终止6.联系:程序是计算机指令的有序集合,是算法用某种程序设计语言的表述,是算法在计算机上的具体实现。
区别:在语言描述上不同,程序必须是用规定的程序设计语言来写,而算法的描述形式包括自然语言、伪代码、流程图和程序语言等;算法所描述的步骤一定是有限的,而程序可以无限地执行下去,比如一个死循环可以称为程序,但不能称为算法。
7.正确性:算法的执行结果应当满足功能需求,无语法错误,无逻辑错误简明性:思路清晰、层次分明、易读易懂,有利于调试维护健壮性:当输入不合法数据时,应能做适当处理,不至于引起严重后果效率:有效使用存储空间和有高的时间效率最优性:解决同一个问题可能有多种算法,应进行比较,选择最佳算法可使用性:用户友好性8(1)执行次数为n-1(n>=2),n=1时执行1次;时间复杂度为O(n)。
(2)执行次数为⌈log3n⌉;时间复杂度为O(logn)(3) 执行次数为n2;时间复杂度为O(n2)(4)执行次数为⌊√n⌋ + 1;时间复杂度为O(√n)第2 章线性表1.A2.D3.B4.C5.B6.D7.D8.C9.A10.D1.编写程序实现对顺序表逆置。
【分析】算法分析与设计作业参考答案

【关键字】分析《算法分析与设计》作业参考答案作业一一、名词解释:1.递归算法:直接或间接地调用自身的算法称为递归算法。
2.程序:程序是算法用某种程序设计语言的具体实现。
2、简答题:1.算法需要满足哪些性质?简述之。
算法是若干指令的有穷序列,满足性质:1)输入:有零个或多个外部量作为算法的输入。
2)输出:算法产生至少一个量作为输出。
3)确定性:组成算法的每条指令清晰、无歧义。
4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。
2.简要分析分治法能解决的问题具有的特征。
分析分治法能解决的问题主要具有如下特征:1)该问题的规模缩小到一定的程度就可以容易地解决;2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;3)利用该问题分解出的子问题的解可以合并为该问题的解;4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。
将递归算法转化为非递归算法的方法主要有:1)采用一个用户定义的栈来模拟系统的递归调用工作栈。
该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。
2)用递推来实现递归函数。
3)通过Cooper变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。
后两种方法在时空复杂度上均有较大改善,但其适用范围有限。
三、算法编写及算法应用分析题:1.冒泡排序算法的基本运算如下:for i ←1 to n-1 dofor j ←1 to n-i doif a[j]<a[j+1] then交换a[j]、a[j+1];分析该算法的时间复杂性。
解答:排序算法的基本运算步为元素比较,冒泡排序算法的时间复杂性就是求比较次数与n的关系。
1)设比较一次花时间1;2)内循环次数为:n-i次,(i=1,…n),花时间为:3)外循环次数为:n-1,花时间为:2.设计一个分治算法计算一棵二叉树的高度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“思考”
明确目的
找准思路
确定方法
行动
所以, 找准思路以达到目的是很关键的一步,它决定着整
件事情的成败。 从广义上说,为解决一个问题而采、算法的概念
算法是对特定问题求解步骤的描述,它是指令的 有限序列。
• 从北京到天津开会 • 吃饭、上学、打球 • 到超市购物 • 一个程序的实现
2.4、算法的描述
常用的方法有: 自然语言、传统流程图、结构化流程图、 N-S方框图、伪代码和程序表示法。
1、自然语言:通俗易懂,但文字庸长,容易出现歧义;
2、传统流程图:用规定的流程图符号直观形象,表达较 清楚,但随意跳转的流程线会使图变得毫无规律,如 同乱麻,难读难改;
传统流程图
求 三 个 数 中 的 最 大 值 。
程序 = (菜谱) =
数据结构 (配料)
+
算法
+ (操作步骤)
总的说来,算法和程序的区别主要在于: ① 在语言描述上,程序必须是用规定的程序设计语言
来写,而算法很随意; ② 在执行时间上,算法所描述的步骤一定是有限的,
而程序可以无限地执行下去。
2.3、算法的特点
1、有穷性:一个算法应包含有限的操作步骤,而 不能是无限的。 2、确定性:算法中每一个步骤都应当是确定的, 不能含糊、模棱两可。 3、有 >=0 个的输入量。 4、有 >=1 个的输出量。 5、有效性:每一个步骤都应该是有效的合法的。
开始 输入abc值
Max=a
Max<b N Y
Max=b
Max<c N Y
Max=c
输出max值
结束
2.2、简单算法举例
例:求1*2*3*4*5
•步骤1:先求1*2,得到结果2。 •步骤2:将步骤1得到的乘积2再乘以3,得到结果6。 •步骤3:将步骤2得到的乘积6再乘以4,得到结果24。 •步骤4:将步骤3得到的乘积24再乘以5,得到最后结果120。
算法与程序的关系
算法和程序都是指令的有限序列,但是: 程序是算法,而算法不一定是程序。