【数据结构和算法】2谈谈算法

算法初体验

高斯算法"1+2+3+...+100"

普通的解决方法

int i, sum = 0, n = 100;
for(i=1; i <= n; i++)
{
sum = sum + i;
}
printf(“%d”, sum);

利用高斯的算法

int i, sum = 0, n = 100;
sum = (1+n)*n/2;
printf(“%d”, sum);

对比一下,可以看出,好的算法,可以省时又省力;

算法概念:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作;

另解:算法就是你泡妞儿的技巧和方式(皮一下,很开心O(∩_∩)O~~)

可以看出:对于给定的问题,是可以有多种算法来解决的。

就像没有药可以包治百病一样,一个问题可以由多个算法解决,一个算法不可能具有通解所有问题的能力;


算法的特性

算法有五大基本特性:输入、输出、有穷性、确定性、可行性

输入:算法有零个或者多个输入。比如打印一句话的程序,只有输出,就没有输入;

输出:算法至少有一个或者多个输出,

算法必须要有输出,输出的形式没有限制,可以是打印的动作,也可以返回一个或多个值;

有穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成;

确定性:算法的每一步骤,都具有确定的含义,不会出现二义性,

算法在一定的条件下,只有一条执行路径,相同的输入只能有唯一的输出结果,

算法的每一个步骤都应该被精确定义,而无歧义;

可行性:算法的每一步,都必须是可行的。也就是说,每一步经过有限次的运算,都可以完成;


算法设计的要求

尽管算法不唯一,但我们也需要学习一些好的算法,对我们解决自己的问题,会有很大的帮助;

正确性:

大致可以分为一下四个层次

算法设计不能有语法错误;

对合法的输入能产生满足要求的输出;

非法的输入应有满足规格的说明,提示用户错误信息;

对故意刁难的测试应有满足要求的输出结果;

可读性:

应便于阅读,理解,交流;

写代码的目的就是为了便于他人和自己日后阅读修改;

健壮性:

当用户输入的数据不合法时,算法也能做相关处理,而不是产生异常、崩溃、或莫名其妙的结果;

时间效率高,存储量低:

一高一低,算法赢尽量往这方面靠拢;


finished  2018.11.2 10:47  by songpl

★转载请注明出处

猜你喜欢

转载自blog.csdn.net/plSong_CSDN/article/details/84285645