1、算法概念
- 算法是一种解决问题的方法和思想,是计算机处理信息的本质(告诉计算机下一步需要做什么);
- 使用算法处理信息过程:输入设备或数据存储地址中读取数据,将结果写到输出设备或存储地址中以备调用;
- 算法可被多种语言实现。
2、算法初体验
首先我们可以设计一个1-100求和的算法
传统算法
sum = 0for i in range(1, 101):sum += iprint(sum)
高斯算法
n = 100sum = (1 + n)*n/2print(sum)
以上就是针对一个问题而设计的两个不同算法,很显然,我们传统的算法,需要迭代100次,而高斯的算法,只需要一次,虽然计算机的速度很快,但是随着条件的增大,两者的差距就会体现出来。
3、算法五大特性
- 输入:有0个或多个输入;
- 输出:至少有1个或多个输出;输出形式可以是打印输出,也可以是返回一个或多个值;
- 有穷性:算法能在有限步骤内执行完,且每一步都能在有限的时间内执行完,避免死循环;
- 确定性:每一步骤都是有明确含义的,而不会出现二义性,即相同的输入应该得到相同的输出;
- 可行性:算法每一步都能有效执行,得出正确的结果;
#输出满足条件:a^2+b^2=c^2 且 a+b+c=1000 的3个数import timestart=time.time()for a in range(0,1000):for b in range(0,1000):c=1000-a-bif a**2+b**2==c**2:print('a=%s,b=%s,c=%s' % (a, b, c))end=time.time()print('time=',end-start) #4.189582109451294
运行结果
a=0,b=500,c=500a=200,b=375,c=425a=375,b=200,c=425a=500,b=0,c=500time=4.189582109451294
4、算法设计的要求
正确性:算法至少应该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够得到问题的正确答案。可以分为以下四个层次:
算法程序没有语法错误
算法程序对于合法输入能够产生满足要求的输出
算法程序对于非法输入能够产生满足规格的说明
算法程序对于故意刁难的测试输入都有满足要求的输出结果
可读性
- 算法设计要便于阅读、理解和交流
健壮性
- 当输入数据不合法时,算法也能做出相关处理,而不是抛出异常或者崩溃。
时间效率高和存储量低
