读一本书以前,先读它的目录,了解整本书的结构。算法
第1章 绪论:绪,丝端也。――《说文》。也就是指一篇文章的开端。编程
1.1 什么是数据结构 :数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。一般状况下,精心选择的数据结构能够带来更高的运行或者存储效率。数据结构每每同高效的检索算法和索引技术有关。数据结构
1.2 基本概念和术语 :这一节是讲基本概念和术语。编程语言
1.3 抽象数据类型的表示与实现:抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操做。抽象数据类型须要经过固有数据类型(高级编程语言中已实现的数据类型)来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,而且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就能够像使用基本数据类型那样,十分方便地使用抽象数据类型。函数
1.4 算法和算法分析:算法是对特定问题求解步骤的一种描述,它规定了解决问题的运算序列。算法分析是对一个算法须要多少计算时间和存储空间做定量的分析。 算法(Algorithm)是解题的步骤,能够把算法定义成解一肯定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法表明用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不一样的人能够编写出不一样的程序,来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。算法和程序之间存在密切的关系。分析算法能够预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不一样算法的有效性做出比较。测试
1.4.1算法优化
1.4.2算法设计的要求:spa
一个优秀的算法应该具有的设计要求主要有如下几点:
设计
算法的正确性是指算法至少具备输入,输出和加工处理无歧义,而且能够正确反映问题的需求,以及正确获得问题的答案。
关于“正确”的理解一共有四个层次:
调试
第四点比较难,由于咱们几乎不可能对全部的状况都逐一进行验证,因此,通常来讲,可以知足前3条就是一个正确性比较好的算法了。
算法设计的另外一个目的是为了便于阅读,理解和沟通,若是写的代码只有你和上帝能看懂,那这个算法只能说明很失败,由于算法越难理解,就越难找到他的bug,对于调试和修改就更难了
当输入的数据不合法的时候,算法也能给出相关的处理,而不是产生异常或者莫名起码的错误。
1.4.3算法效率的度量:算法执行时间需经过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间一般有两种方法。(1)过后统计的方法。(2)事前分析估算的方法。因过后统计方法更多的依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法自己的优劣。所以人们经常采用事前分析估算的方法。
1.4.4 算法的存储空间需求:
相似于算法的时间复杂度,空间复杂度能够做为算法所需存储空间的量度。
记做:
S(n)=O(f(n))
若额外空间相对于输入数据量来讲是常数,则称此算法为原地工做。
若是所占空间量依赖于特定的输入,则除特别指明外,均按最坏状况来分析。