第一章算法初步
第一节程序设计与算法
  
一、算法
 算法是解决问题方法的精确描述,但是并不是所有问题都有算法,有些问题经研究可行,则相应有算法,但这并不是说问题就有结果。上述的“可行”,是指对算法的研究。
 1.待解问题的描述
 待解问题表述应精确、简练、清楚,使用形式化模型刻划问题是最恰当的。例如,使用数学模型刻划问题是最简明、严格的,一旦问题形式化了,就可依据相应严格的模型对问题求解。
 2.算法设计
 算法设计的任务是对各类具体问题设计良好的算法及研究设计算法的规律和方法。常用的算法有:穷举搜索法、递归法、回溯法、贪心法、分治法等。
 3.算法分析
 算法分析的任务是对设计出的每一个具体的算法,利用数学工具,讨论各种复杂度,以探讨某种具体算法适用于哪类问题,或某类问题宜采用哪种算法。
 算法的复杂度分时间复杂度和空间复杂度。
  .时间复杂度:在运行算法时所耗费的时间为f(n)(即 n的函数)。
  .空间复杂度:实现算法所占用的空间为g(n)(也为n的函数)。
 称O(f(n))和O(g(n))为该算法的复杂度。
 二、程序设计
 1.程序
 程序是对所要解决的问题的各个对象和处理规则的描述,或者说是数据结构和算法的描述,因此有人说,数据结构+算法=程序。
 2.程序设计
 程序设计就是设计、编制和调试程序的过程。
 3.结构化程序设计
 结构化程序设计是利用逐步求精的方法,按一套程式化的设计准则进行程序的设计。由这种方法产生的程序是结构良好的。所谓“结构良好”是指:
 (1)易于保证和验证其正确性;
 (2)易于阅读、易于理解和易于维护

