美文网首页小白学编程
第二章 算法——程序的灵魂

第二章 算法——程序的灵魂

作者: 三带二 | 来源:发表于2019-07-20 17:32 被阅读0次

一个程序主要包括两方面的内容:

第一是数据结构。是对数据的描述,在程序中要指定哪些数据以及这些数据的类型和数据的组织形式

第二是算法。是对操作的描述,即要求计算机进行操作的步骤。

著名计算机科学家沃斯提出一个公式:算法+数据结构=程序

2.1    什么是算法:

广义的说,为解决一个问题而采取的方法和步骤就称为算法;

计算机算法分为数值运算算法和非数值运算算法,数值运算的目的是求数值的解;非数值运算的应用范围十分广泛;目前,计算机在非数值运算方面的应用远远超过了在数值运算方面的作用。


2.2    简单算法举例:

例题 2.1    求1x2x3x4x5.

可以用最原始的方法进行:

步骤1:先求1x2,得到结果2

步骤2:将步骤1中的结果2与3相乘得到结果6

步骤3:将6乘以4得到24

步骤4:将24乘以5,得到最终的结果120

可以看出这样计算的结果是正确的,但是计算过程过于复杂,当式子中的因数的个数有很多时,这样的算法是不可取的。

可以通过以下的计算方法来简化计算过程:

首先,令p=1,i=2

然后,使p与i 相乘,结果赋给p;

再令i的值加1后与p相乘,

如果i的值不大于5,则循环执行第二步,和第三步;否则。算法结束,最后得到的P值就是最终的结果;

例题 2.2    有50个学生,要求输出成绩在80分以上的学生的学号和成绩:

为描述方便,统一用n表示学生的学号,用下标i代表第几个学生,n1表示第一个学生,ni表示第i个学生,统一用g表示学生的成绩,

下面给出算法:

S1:i=1

S2:如果g1>=80,则输出n1和g1,否则不输出

S2:i=i+1

S4:如果i<=50;返回S2继续执行,否则算法结束

例题 2.3    判定2000-2500年中的每一年是否为闰年,并将结果输出:

首先需要明确闰年的条件:

(1)能被4整除,但是不能被100整除的年份都是闰年

(2)能被400整除的年份是闰年

设year为被检测的年份:

S1:year=2000

S2:若year不能被4整除,则输出year的值和“不是闰年”,然后转到S6,检查下一年份

S3:若year能被4整除,不能被100整除,则输出year的值和“是闰年”,然后转到S6

S4:若year能被400整除,输出year的值和“是闰年”,然后转到S6

S5:输出year的值和“不是闰年”

S6:year=year+1

S7:当year<=2500时,转到S2继续执行,否则算法结束

例题 2.4    给出一个或大于3的整数,判断它是不是素数:

首先要明确素数的概念:所谓素数是指除了1和该数本身,不能被其他任何整数整除的数。

判定一个数n是否为素数的方法:将n作为被除数,将2到n-1各个整数先后作为除数,如果都不能整除,则n为素数。

算法表述如下:

S1:输入n的值

S2:i=2

S3:n被i除,得到余数r

S4:如果r=0,表示n能被i整除,则输出n不是素数,否则执行S5

S5:i=i+1

S6:如果i<=n-1,返回S3;否则输出n的值及“n是素数”,算法结束


2.3    算法的特性

一个有效的算法应该具有以下的特点:

(1)有穷性:一个算法应具有有限的操作步骤,而不能是无限的。

(2)确定性:算法中的每一个步骤都应该是确定的,而不是含糊或摸棱两可的。

(3)有零或多个输入:所谓的输入,是指在执行算法时需要从外界取得必要的信息。

(4)有一个或多个输出:算法的目的是为了求“解”,“解”就是输出。

(5)有效性:算法中的每一个步骤都应当有效的执行,并得到确定的结果。


2.4    怎样表示一个算法:

算法的表示方法有很多种,最常用到的方法有:用自然语言表示算法;用流程图表示算法;用N-S流程图表示算法;用伪代码表示算法和用计算机语言表示算法等

算法有三种基本结构:分别是顺序结构,选择结构和循环结构(分为“当”型和“直到”型)


2.5    结构化程序设计的方法:

(1)自顶而下;

(2)逐步细化;

(3)模块化设计;

(4)结构化编码;


相关文章

  • 第二章 --程序的灵魂—算法

    一、概念性东西 二、算法特性 2.1 有穷性   一个算法应该包含有限(在合理的范围内)的步骤,而不能是无限的。 ...

  • 第二章 算法——程序的灵魂

    一个程序主要包括两方面的内容: 第一是数据结构。是对数据的描述,在程序中要指定哪些数据以及这些数据的类型和数据的组...

  • 第二章 程序的灵魂-算法

    数据的描述+操作的描述(datastructure + algorithm) 教材说还得有 程序设计方法+语言工具...

  • 程序的灵魂-算法

    数据结构只是静态的描述了数据元素之间的关系。 高效的程序需要在数据结构的基础上设计和选择算法。高效的程序包括恰当的...

  • 算法—程序的灵魂

    1.什么是算法,试从日常生活中找3个例子,描述它们的算法。 为解决一个问题而采取的方法和步骤,就是算法 2.什么叫...

  • 程序的灵魂——算法

    软件工程的思想告诉我们,软件包含两部分内容,一部分是计算机可执行的程序和相关的数据,一部分是与程序及数据有关的描述...

  • 01-什么是算法及算法的5个特征

    算法是程序的灵魂,现在火热的人工智能,算法也是核心,所以你知道算法的重要性了吧 程序=数据结构+算法+某种编程语言...

  • Github标星近4w,这应该是最全的Python学算法入门大全

    算法是程序的灵魂,每个程序员,尤其是高手程序员,对算法的掌握应该是如数家珍,必须要熟悉。算法非常枯燥,但是研究透了...

  • ​从0到1只差这20本算法书单

    瑞士著名的科学家N.Wirth教授曾提出:数据结构+算法=程序。 数据结构是程序的骨架,算法是程序的灵魂。 在我们...

  • <技巧>python模块性能测试

    算法是程序的灵魂,优秀的算法能给程序的效率带来极大的提升,而算法的优劣,往往要经过大量的测试.在硬件环境基本不变的...

网友评论

    本文标题:第二章 算法——程序的灵魂

    本文链接:https://www.haomeiwen.com/subject/dbmslctx.html