标签:
算法的基本概念
以下只是个人学习的笔记,由于我也是刚接触,所以有可能有错误,如有错误,请指出
算法:是解决一个问题的完整的步骤描述,是解决问题的策略、规则、方法。
1.算法的特征:有穷性、确定性、可行性、输入、输出
(1).有穷性:一个算法必须在执行有穷步之后结束并且在每一步都在有穷时间内完成,不能无限的 执行下去。 算法不能出现死循环,如计算一个累加的程序,必须要指定一个最终要加的值,如果不指定,那么这个程序将会死循环,如计算1+2+3+···+99+100,如果没有指定最终的值100,那么他就是一个死循环
(2).确定性:一个算法里面的每条语句,必须都是确定的,不能存在二义性,也就是说,语句不能 出现两种效果或者两种意思
(3).可行性:算法里面的语句必须都是可执行的,比如y=0,z=x/y,这里就是不可行的,因为分母不能为0
(4).输入:一个算法里面包含多个或者0个输入,输入语句用scanf表示,如 多个输入:int a,b,c scanf("%d,%d,%d,"&a,&b,&c); 0个输入:main{ printf("abc"); }
(5).输出:算法内必须要有输出,用printf表示,如果程序没有输出,那么这个程序将没有意义
2.算法的优劣:正确性、可读性、健壮性、时间复杂度与空间复杂度
(1).正确性:一个算法必须要满足具体问题的要求,当输入合法的输入算法必须能正确的输出结果
(2).可读性:为了方便阅读和修改,一个算法不能写的过于复杂,如果算法写的非常复杂,不利于自己或者别人修改和阅读
(3).健壮性:这里的健壮性指的是,当用户输入一个非法的数据,程序应当给予提醒,比如z=x/y,要求用户输入x和y,用户输入x为1,y为0,分母不能为0,在这里,当用户输入为0时,最好给用户提醒,y不能等于0
(4).时间复杂度与空间复杂度:一个程序运行时,都会需要相应的运行时间,如果是小一点的程序,运行时间不会感觉到慢,但是大一点的程序,如果运行时间就会很重要了,就比如QQ,如果每次打开QQ都需要好几个小时,那这样会影响用户的使用。空间复杂度指打开改程序需要的存储空间,但是以计算机的发展,电脑的配置越来越高,这个已经不太重要了
算法的描述
1.算法:算法设计、算法分析
算法设计:主要研究怎样针对某一特定类型的问题设计出求解步骤 算法分析:主要讨论所涉及的算法步骤的正确性和复杂性
2.算法描述:对于一些问题的求解步骤,需要一种表达方式,即为算法描述
算法描述可分为自然语言、流程图、N-S流程图等
(1).自然语言:就是普通语言表达这个算法的步骤,自然语言比较通俗易懂,但是容易产生歧义,如果描述比较复杂的算法不是很方便,所以一般很少用自然语言来描述算法
(2).流程图:是一种传统的算法表示方式,用一些图框来表示算法的不同操作,用流程线来表示算法的执行方向,看起来比较直观,并且易于理解
(3).N-S流程图:和上面说的流程图一样,只不过取掉了流程线,将流程图画在一个矩形框里
算法的结构
算法的结构:顺序结构、循环结构、选择结构(分支结构)
(1).顺序结构:是简单的线性结构,各操作是按照它们出现的先后顺序执行的
(2).选择结构(分支结构):必须包含一个判断框,然后根据判断框进行下一步的操作
(3).循环结构:反复的执行一系列 操作,知道条件不成立的时候才终止循环 循环结构可分为当型循环结构、直到型循环结构 当型循环结构:先判断条件,在执行语句。当条件成立时,进行下一步操作 直到循环结构:先执行语句,在判断条件。执行语句,直到条件成立后在进行下一步操作
标签:
原文地址:http://www.cnblogs.com/lfxiaoweinice/p/4584278.html