数据结构是数据组织、存储和运算的总和。在计算机处理的大量数据中,数据结构和算法是相互关联、彼此联系的。对实际问题选择了一种好的数据结构之后,还得有一个好的算法,才可以更好地求解问题。一个算法应该具备以下特征:1. 有穷性;2. 确定性;3. 可行性;4. 输入;5. 输出,一个算法可以有一个或一个以上的输出,没有输出的算法是无意义的。算法代表了对问题的解,而程序则是算法在计算机上的特定实现。一个算法若用程序设计语言来描述,就成为一个程序。
评价一个算法优劣的主要标准如下。1. 正确性;2. 可读性;3. 健壮性;4. 运行时间;5. 占用空间。评价一个算法优劣的重要依据是看这个算法执行需要占用多少机器资源。而在各种机器资源中,时间和空间是两个最主要的方面。在这里我们分别称为时间复杂度(所需运行时间)和空间复杂度(所占存储空间)。
通常认为一个算法所需的运算时间与所解决问题的规模大小有关。为了便于比较同一问题的不同算法,通常把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。记为:T(n)=f(n) 。其中f(n)是规模为n的算法,重复执行基本操作的次数。比较不同算法的优劣主要应该以其“增长的趋势”为准则。时间复杂度往往不是精确的执行次数,而是估算的数量级