- 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;此外算法还具有下列五个重要特性:
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
2. 算法设计的要求
通常设计一个好的算法应考虑达到以下目标:
- 正确性 算法应当满足具体问题的要求。通常一个大型问题的需求,要以特定的规格说明方式给出,至少应当包括对于输入,输出和加工处理等的明确的无歧义性的描述。正确一词大体分为以下4个层次:
- 程序不含语法错误
- 程序对于几组输入数据能够得出满足规格说明要求的结果
- 程序对于精心选择的典型,苛刻而带有***难性的几组输入数据能够得出满足满足规格说明要求的结果
- 程序对于一切合法的输入数据都能产生满足规格说明要求的结果。
- 可读性 算法主要是为了人的阅读与交流,其次才是机器执行。
- 健壮性 当输入数据非法时,算法也能适当地作出反应或进行处理,而不会产生黄晓明其妙的输出结果。
- 效率与低存储量需求 效率指的是算法的执行时间,存储量需求指算法执行过程中所需要的最大存储空间。
3. 算法效率的度量
- 事后统计的方法 事后统计依赖于计算机的硬件,软件等环境因素,有时容易掩盖算法本身的优劣。
- 事前估算的方法 一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:
- 依据算法选用何种策略
- 问题的规模,例如求100以内还是1000以内的素数
- 书写程序的语言,对于同一个算法,实现语言的级别超高,执行效率越低
- 编译程序所产生的机器代码的质量
- 机器执行指令的速度
一个算法是由控制结构(顺序,分支和循环)和原操作构成的,则算法时间取决于两者的综合效果。通常的做法是从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度。
通常以时间复杂度和空间复杂度来衡量算法的好坏!