算法复习笔记-绪论

  这两天开始准备考研了,才回到 算法与数据结构,班里就我一个人选这门了,其他都选 自然地理.要做代码,如果不选 算法与数据结构,就没有意义了.一段时间以来,都把 算法和数据结构看得很重要了.所以这次要全力,定心,好好理解.

一,从问题到程序

  1,需求模型

  2,数学模型

  3,实现模型

  程序中描述的过程(算法)

  求解程序的阶段:

    1)分析阶段(需求/数学模型).

    2)设计阶段(实现模型).

    3)编码阶段

    4)调试和维护

  不同抽象数据类型的主要特征由它们具有的行为决定.

  

"数据元素"是数据的 基本 单位,

"数据项"是不可分割的 最小 单位,是构成数据元素的最小单位.

二,抽象数据类型

  1,类型:一组值(对象)的集合.

  2,数据类型:计算机中使用的一类型,既包括该类型值的集合,也包括定义在该类型上的一组操作.如,整数作为一个数据类型,指的是在计算机中表示的所有整数及其语言中定义的对于这些整数的全部操作.

  抽象数据类型的定义仅取决于它的一组 逻辑特性,与 计算机内部如何表示和实现 无关;只要它的 数学特性 不变,就不影响外部使用.

三,数据结构

  1,数据结构,是计算机中表示的具有一定逻辑关系的一组数据.亦可理解为,'抽象数据类型的物理实现',所谓'物理实现',主要意图是强调本课程关心的,'实现'应具体到可以用计算机的两个重要的物理量(即主机的运行时间和内存的存储空间).

  2,逻辑结构:基本元素和元素之间的关系(数据的组织形式,即数据元素之间逻辑关系的总体,而逻辑关系是指数据元素之间的关联方式或"邻接方式").

  3,存储结构:结点的表示和关系的表示.

  集合中的元素是各不相同且无序的(逻辑结构).用顺序表,单链表,散列表等多种不同的集合表示法(存储结构).

  一种逻辑结构往往存在多种存储结构.

  数据结构研讨数据的 逻辑结构物理结构.

  数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立.

四,数据结构的分类

  1)按逻辑分类:

    B=<K,R>,k:有穷集合.R:K上的一个关系.'关系'为二元组的集合.K上的二元组是K中元素的有序对.若 k,k'R,则k为k'的前驱,k'为k的后继.

    开始结点:没有前驱的结点

    终端结点:没有后继的结点

    A,线性结构:K中每个结点最多只有一个前驱和一个后继的结构.

    B,树形结构:一般而言,开始结点和最终结点可不唯一.

    集合,可看成R为空的情况,即结点之间没有任何关系.

    各种路基结构的包含关系:集合结构  线性结构  树形结构  复杂结构.

  2)按存储结构分类:

    解决逻辑结构在计算机中的存储或表示,包括结点的表示和关系的表示

    A,顺序表示

    B,链接表示

    C,散列表示,'关键码-地址'转换法,根据关键码的值,将结点映射到给定的存储空间(通过函数).

    D,索引表示,通过建立辅助索引结构解决.索引由索引项组成.索引项包含一个结点的关键码和该节点的存储位置.

    结点:数据结构中的基本单位.

五,外存数据组织

  通常,将外存上的数据以某种方式组织成文件,通过文件系统完成对它们的管理.

  文件是逻辑记录的集合.逻辑记录是应用程序要进行内,外存交换的逻辑单元.每个记录可包含若干数据项.

  与内存不同,对外存的数据项按页块存取.

六,外存存取.

  读取外存数据时,先通过主机与外存的接口,将外存上物理记录读到缓冲区,然后找出需要的逻辑记录进行处理.写的过程相反.

  通常,用"指针"来指向外存储器上的逻辑记录.该指针也就是逻辑记录的外存地址.常由两部分联合组成:1)逻辑记录所有的物理记录的地址.2)逻辑记录在物理记录的相对位置.即从物理记录首部到逻辑记录首部之间的位移量.

  节省外存存取时间,关键在于减少访问次数.由于缓冲区大小受限,所以应精心设计文件的结构,外存中的记录应相互关联,以便于处理.如,当文件中包含大量记录时,为提高检索速度,可参考散列或索引表示法.

七,文件的分类

  1,顺序文件,运用于磁带存储器.读写一个页块后,接着读写后面的页块,无需忽前忽后地找页块,定位时间少.

  2,散列文件.

  3,索引文件.

  4,倒排文件:有时不仅按关键码值查找,也需要按记录中某些数据项值查找.为提高属性值查找速度,将这些属性值建立索引.索引中每一个索引项包括一个属性值和具有该属性值的所有记录的地址.

八,排序

  在排序过程中,其他操作话费的时间都远远小于比较运算.

九,时间复杂度

  log2n < n < n*log2n

十,外存

  由于每次访问外存可能花费很多时间来定位,因此,为了减少访外的次数,在内,外存交换时,采用缓冲区和分块存取技术.

 

你可能感兴趣的:(算法)