Atitit 算法的理解
目录
1. 算法(Algorithm),是程序的灵魂
【文章摘要】
算法(Algorithm),是程序的灵魂。著名计算机科学家、图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序。可见,算法在程序中占有非常重要的地位。
在实际的软件开发项目中,不管是有意设计或是无意为之,我们几乎随时在和算法打交道。小到定义一个变量,大到编写一个函数,这些都是算法的实现过程。
本文以作者实际项目工作为背景,介绍算法在C程序中的应用。
【关键词】
C语言 算法 程序
1. 算法概述
什么是算法呢?先来看一看一些计算机书籍中的定义。
经典书籍《算法导论》(Cormen等著,机械工业出版社)中,作者认为算法是一系列的计算步骤,用来将输入数据转换成输出结果。
以上对算法的定义都是偏重理论,在实际的软件开发项目中,算法是用程序代码实现软件需求的方法,是软件开发工程师逻辑思维的体现。
2. 2. 算法的图形化表示
为了形象化地体现出算法,不同的学者设计出了不同的方法,这些方法包括:自然语言,流程图,N-S流程图,伪代码等。在实际的编程工作中,大都采用流程图来直观地表示算法。流程图逻辑清晰,很适合开发人员使用。
3. 3. 算法在实际软件开发项目中的应用
对于以算法立足的公司,像Google、百度等,算法就非常的重要,他们有专门的算法工程师岗位;对于做产品的公司,相对而言,做出产品来是最主要的,他们注重的是算法在产品中的应用。
但不管是专门的算法工程师,还是一般的软件开发工程师,我们都会经常与算法打交道。以下介绍作者本人在项目工作中所遇到过的一些算法问题。
. 总结
算法是计算机科学的基础,更是程序设计的基石,只有具备良好算法基础的人才能成为优秀的软件开发人员。
当然,在实际的软件开发中,遇到一个问题,我们也不能总想着用最复杂的算法来解决它,以显示出自己水平的高超。程序中的算法要力求简单、清晰、执行效率高。
爱因斯坦曾说过:“科学家应该使用最简单的手段达到他们的结论,并排除一切不能被认识到的事物”。也就是说,简单就是美。我们设计算法要遵循“奥卡姆剃刀原理”(即“简单有效原理”),该原理认为,切勿浪费较多东西去做用较少的东西同样可以做好的事情。在软件开发过程中,该原理同样适用。它要求我们要力求让自己的代码尽量简单直观,用较简单的算法实现用户要求的功能。
在学校学了很多算法理论,只有在实际的工作中才能够体会到它们的妙用。但在应用之前,一定要对各种算法的优劣及应用场景了然于心。
4. 算法的特点:
4.1. 1. 有穷性。
包含有限的操作步骤。
4.2. 2. 确定性。
算法中的每一个步骤都应当是确定的。
4.3. 3. 有零个或多个输入。
输入是指在执行算法时需要从外界取得必要的信息。
4.4. 4. 有一个或多个输出。
算法的目的是为了求解,“解” 就是输出。
4.5. 5. 有效性。
算法中的每一个步骤都应当能有效地执行,并得到确定的结果。
5. 怎样表示算法:
5.1. 1. 自然语言。
自然语言就是人们日常使用的语言,可以使汉语、英语、法语等语言。
用自然语言通俗易懂,但是文字冗长,容易出现二义性。
5.2. 2. 流程图。
流程图是用一些图框来表示各种操作。
用图形法表示算法,直观形象,易于理解。
5.3. 3. 用伪代码表示算法。
用流程图等图形工具来表示算法虽然简单明了,但是图形绘画和设计比较麻烦,而且实际中的算法需要进行动态修改,此时使用图形表示就不会很方便。这里就可以用伪代码来表示算法。
伪代码是用介于自然语言和计算机语言之间的文字和符号来表示算法。
例如打印输出x的绝对值,可以用下面伪代码实现:
如果x>0;
Print x;
如果 x<0;
Print –x;
5.4. 4. 用计算机语言表示算法。
例如输出1+2+3+……+100的值,可以用下面的C语言代码来实现:
00001.
<span style="font-size:14px;">#include <stdio.h>
00002.
00003.
void main()
00004.
00005.
{
00006.
00007.
int sum = 0;
00008.
00009.
int i;
00010.
00011.
for (i = 0; i
00012.
程序的灵魂——算法 - CSDN博客.html