知识大全 数据结构复习重点归纳(适于清华严版教材)[4]

Posted 操作

篇首语:临文乍了了,彻卷兀若无。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构复习重点归纳(适于清华严版教材)[4]相关的知识,希望对你有一定的参考价值。

   算法和算法分析

  Algorithms and Algorithm Analysis

   算法

  所谓算法(Algorithm)是对问题求解步骤的一种描述 是指令的有限序列 其中每一条指令表示一个或多个操作 在CLRS中是这样给出算法的定义的 Informally an algorithm is any well defined putational procedure that takes some value or set of values as input and produces some value or set of values as output An algorithm is thus a sequence of putational steps that transform the input into the output

  一个算法必须满足以下五个重要特性

   有穷性 对于任意一组合法输入值 在执行有穷步骤之后一定能结束 即 算法中的每个步骤都能在有限时间内完成;

   确定性 对于每种情况下所应执行的操作 在算法中都有确切的规定 使算法的执行者或阅读者都能明确其含义及如何执行 并且在任何条件下 算法都只有一条执行路径;

   可行性 算法中描述的操作都可以通过已经实现的基本操作运算有限次实现之;

   有输入 作为算法加工对象的量值 通常体现为算法中的一组变量 有些输入量需要在算法执行过程中输入 而有的算法表面上可以没有输入 实际上已被嵌入算法之中;

   有输出 它是一组与输入有确定关系的量值 是算法进行信息加工后得到的结果

   算法设计的原则

  设计算法时我们应当严格考虑

   正确性(Correctness)

  首先 算法应当满足以特定的 规格说明 方式给出的需求 对算法是否 正确 的理解可以有以下四个层次

  a 程序中不含语法错误;

  b 程序对于几组输入数据能够得出满足要求的输出结果;

  c 程序对于精心选择的 典型 苛刻的几组输入数据能够得出满足要求的结果;

  d 程序对于一切合法的输入数据都能得出满足要求的结果;

  通常以第c层意义的正确性作为衡量一个算法是否合格的标准 因为作为输入 我们有时候不可能提前做出所有的预期

   可读性(Readability)

  算法主要是为了人的阅读与交流 其次才是为计算机执行 因此算法应该易于人的理解;另一方面 晦涩难读的程序易于隐藏较多错误而难以调试;有些程序设计者总是把自己设计的算法写的只有自己才能看懂 这样的算法反而没有太大的价值

   健壮性(Rubustness)

  当输入的数据非法时 算法应当恰当地作出反映或进行相应处理 而不是产生莫名奇妙的输出结果 这就需要我们一定要充分的考虑异常情况(Unexpected Exceptions)并且 处理出错的方法不应是中断程序的执行 而应是返回一个表示错误或错误性质的值 以便在更高的抽象层次上进行处理

   高效率与低存储量需求

  通常 效率指的是算法执行时间;存储量指的是算法执行过程中所需的最大存储空间 两者都与问题的规模有关

   算法效率的衡量方法与准则

  通常有两种衡量算法效率的方法:

   事后统计法

  缺点

  ( )必须执行程序才能进行判断

  ( )其它因素(如硬件 软件环境)掩盖算法本质

   事前分析估算法

  主要是看消耗的时间 和算法执行时间相关的因素

   算法选用的策略

   问题的规模

   编写程序的语言

   编译程序产生的机器代码的质量

   计算机执行指令的速度

  一个特定算法的 运行工作量 的大小 只依赖于问题的规模(通常用整数量n表示) 或者说 它是问题规模的函数 假如 随着问题规模n的增长 算法执行时间的增长率和f(n)的增长率相同 则可记作

  T (n) = O(f(n))

  称T (n) 为算法的渐近时间复杂度(Asymptotic Time Complexity) 简称时间复杂度 O是数量级的符号

  下面我们探讨一下如何估算算法的时间复杂度

  算法 = 控制结构 + 原操作(固有数据类型的操作)

  算法的执行时间=原操作(i)的执行次数×原操作(i)的执行时间

  算法的执行时间与原操作执行次数之和成正比

  我们先介绍一个概念

  for(j= ;j <=n;++j)

  for(k= ;k <=n;++k)++x;x+=x;

  语句重复执行的次数被称为语句的频度(Frequency Count)上程序段中++x的语句频度就是n

  我们经常采用 从算法中选取一种对于所研究的问题来说是基本操作的原操作 以该基本操作在算法中重复执行的次数作为算法运行时间的衡量准则 这个原操作多数情况下是最深层次循环内的语句中的原操作

  例如

  for (i= ; i <=n; ++i)

  for (j= ; j <=n; ++j)

  c[i j] = ;

  for (k= ; k <=n; ++k)

  c[i j] += a[i k]*b[k j];

  

  该算法的基本操作是乘法操作 时间复杂度为 O(n )

   算法的存储空间(Memory Space for Algorithms)

  算法的空间复杂度S(n) = O(g(n))

  表示随着问题规模n的增大 算法运行所需存储量的增长率与g(n)的增长率相同

  算法的存储量包括:

   输入数据所占空间;

   程序本身所占空间;

   辅助变量所占空间

  若输入数据所占空间只取决与问题本身 和算法无关 则只需要分析除输入和程序之外的额外空间 若所需额外空间相对于输入数据量来说是常数 则称此算法为原地工作

cha138/Article/program/sjjg/201311/23997

相关参考

知识大全 数据结构复习重点归纳(适于清华严版教材)[1]

  一数据结构的章节结构及重点构成  数据结构学科的章节划分基本上为概论线性表栈和队列串多维数组和广义表树和二叉树图查找内排外排文件动态存储分配  对于绝大多数的学校而言外排文件动态存储分配三章基本上

知识大全 数据结构复习重点归纳(适于清华严版教材)[2]

  下面我们看一下图这一章的主要考点以及这些考点的考查方式  考查有关图的基本概念问题  这些概念是进行图一章学习的基础这一章的概念包括图的定义和特点无向图有向图入度出度完全图生成子图路径长度回路(强

知识大全 数据结构[5]

  三复习方法  教材的选择  从考试大纲来看所要求的知识在一般的大学数据结构教材中都已经包含所以选择哪本书并不是最重要的事情不过根据希赛教育推荐对于数据结构的复习可以选择清华大学出版社的《数据结构(

知识大全 数据结构备考[4]

  四参考资料  目前国内数据结构教材的版本有PascalCC++Java多但C语言版本的教材是使用最广的教材虽然考试大纲还没有出来但基本上可以确定的教材是清华大学出版社出版严蔚敏等著的《数据结构(C

知识大全 谁能给一份初一上的生物复习资料(重点归纳)急

谁能给一份初一上的生物复习资料(重点归纳)急!一、生物对环境的适应P19的例子二、生物对环境的影响:植物的蒸腾作用调节空气湿度、植物的枯叶枯枝腐烂后可调节土壤肥力、动物粪便改良土壤、蚯蚓松土第四节生态

知识大全 数据结构备考[3]

  三备考复习方法  在复习的过程复习始终围绕教材展开笔者认为数据结构的复习备考可以分为四个阶段  由于数据结构一般在第三个学期进行教学且数据结构本身也具有一定的难度所以第一个阶段就是熟悉教材熟悉教材

知识大全 清华大学本科计算机专业有哪些课程,用哪些教材

清华大学本科计算机专业有哪些课程,用哪些教材?一年级第一学期:高等数学,英语,体育,计算机导论,其他的课程(都不是很重要)第二学期:高等数学,英语,体育,C语言,线性代数,大学物理,还有其它的都不是很

知识大全 清华大学会计专业考研都考哪些科目,有没有指定的参考教材

清华大学会计专业考研都考哪些科目,有没有指定的参考教材?有过这方面经验的同学请指导一下!谢谢!政治,英语,数学,全国统一命题专业课一:(120201)会计学专业课二:(879)企业管理(包括微观经济学

知识大全 清华大学经管学院学的《会计学原理》《经济学原理》《信息管理导论》这几本教材的作者和出版单位。

清华大学经管学院学的《会计学原理》《经济学原理》《信息管理导论》这几本教材的作者和出版单位。会计学原理的书根据老师的不同而不同,但内容大致相同,上课的内容和书并不是完全一致的。其中薛健的更学术一点。经

知识大全 数据结构考研分类复习真题 第九章 集合[37]

  试画出从空树开始由字符序列(tdesugbjakri)构成的二叉平衡树并为每一次的平衡处理指明旋转类型【清华大学三(分)】  给定关键词输入序列CAPAQUPISARITAUGEMCANLIBVI