1、算法概念

  • 算法是一种解决问题的方法和思想,是计算机处理信息的本质(告诉计算机下一步需要做什么);
  • 使用算法处理信息过程:输入设备或数据存储地址中读取数据,将结果写到输出设备或存储地址中以备调用;
  • 算法可被多种语言实现。

**

2、算法初体验

首先我们可以设计一个1-100求和的算法
传统算法

  1. sum = 0
  2. for i in range(1, 101):
  3. sum += i
  4. print(sum)

高斯算法

  1. n = 100
  2. sum = (1 + n)*n/2
  3. print(sum)

以上就是针对一个问题而设计的两个不同算法,很显然,我们传统的算法,需要迭代100次,而高斯的算法,只需要一次,虽然计算机的速度很快,但是随着条件的增大,两者的差距就会体现出来。

3、算法五大特性

  • 输入:有0个或多个输入;
  • 输出:至少有1个或多个输出;输出形式可以是打印输出,也可以是返回一个或多个值;
  • 有穷性:算法能在有限步骤内执行完,且每一步都能在有限的时间内执行完,避免死循环;
  • 确定性:每一步骤都是有明确含义的,而不会出现二义性,即相同的输入应该得到相同的输出;
  • 可行性:算法每一步都能有效执行,得出正确的结果;
  1. #输出满足条件:a^2+b^2=c^2 且 a+b+c=1000 的3个数
  2. import time
  3. start=time.time()
  4. for a in range(0,1000):
  5. for b in range(0,1000):
  6. c=1000-a-b
  7. if a**2+b**2==c**2:
  8. print('a=%s,b=%s,c=%s' % (a, b, c))
  9. end=time.time()
  10. print('time=',end-start) #4.189582109451294

运行结果

  1. a=0,b=500,c=500
  2. a=200,b=375,c=425
  3. a=375,b=200,c=425
  4. a=500,b=0,c=500
  5. time=4.189582109451294

4、算法设计的要求

  • 正确性:算法至少应该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够得到问题的正确答案。可以分为以下四个层次:

    • 算法程序没有语法错误

    • 算法程序对于合法输入能够产生满足要求的输出

    • 算法程序对于非法输入能够产生满足规格的说明

    • 算法程序对于故意刁难的测试输入都有满足要求的输出结果

  • 可读性

    • 算法设计要便于阅读、理解和交流
  • 健壮性

    • 当输入数据不合法时,算法也能做出相关处理,而不是抛出异常或者崩溃。
  • 时间效率高和存储量低