免费试听
登录/注册体验更全面的学习服务
数据结构导论基础学习班--吴 沛
您可以免费试用讲义功能,购买课程后,可对讲义进行下载、打印。
  一、学习目的与要求
  理解数据、数据元素和数据项的概念及其相互关系;
  理解数据结构的含义;
  理解逻辑结构、基本运算和存储结构的概念,意义和分类;
  理解存储结构与逻辑结构的关系;
  理解算法的概念;
  理解衡量一个算法效率的两个标准:时间复杂度和空间复杂度。

  二、课程内容
  1.1 引言
  计算机处理问题的一般步骤:
  (1)从具体的问题抽象出一个适当的数学模型;
  (2)设计一个求解该数学模型的算法;
  (3)用某种计算机语言编写实现该算法的程序,调试和运行程序直至最终得到问题的解答。
  

  1.2 基本概念和术语
  1.2.1 数据、数据元素和数据项
  数据:所有被计算机存储、处理的对象。数值、布尔值等扩展到字符串、表格、图像甚至声音等。
  数据元素(元素):数据的基本单位,在程序中作为一个整体而加以考虑和处理。
  数据项:一般情况下,数据元素由数据项组成。在数据库中数据项又称为字段或域。.它是数据的不可分割的最小标识单位。
  结合表1-1,理解数据、数据元素、数据项三个概念及之间的联系
  表1-1 学生档案信息表
学号
姓名
性别
年龄
入学成绩
1001
王韬
20
589
1002
潘小欣
21
580
1003
张艳
19
568
1004
赵李军
18
580
1005
刘勇
22
585

  1.2.2 数据的逻辑结构
  数据的逻辑结构是指数据元素之间的逻辑关系。所谓逻辑关系是指数据元素之间的关联方式或“邻接关系”
  四种基本的逻辑结构:
  ●集合:集合中任意两个结点之间都没有邻接关系,组织形式松散。
  ●线性结构:一对一
  ●树形结构:一对多
  ●图结构:多对多
  
  a)集合 b)线性结构 C)树形结构 d)图结构

  1.2.3 数据的存储结构
  数据的逻辑结构在计算机中的实现称为数据的存储结构(或物理结构)。一般情况下,一个存储结构包括以下两个部分:
  (1)存储数据元素;
  (2)数据元素之间的关联方式。
  主要的存储方式:顺序存储、链式存储。顺序存储方式是指所有存储结点存放在一个连续的存储区里。利用结点在存储器中的相对位置来表示数据元素之间的逻辑关系。链式存储方式是指每个存储结点除了含有一个数据元素外,还包含指针,每个指针指向一个与本结点有逻辑关系的结点,用指针表示数据元素之间的逻辑关系。
  除了上述两种存储方式之外,还有索引存储方式和散列存储方式。

  1.2.4 运算
  运算是指在某种逻辑结构上施加的操作,即对逻辑结构的加工。这种加工以数据的逻辑结构为对象。一般来说,在每个逻辑结构上,都定义了一组基本运算,这些运算包括:建立、查找、读取、插入和删除等。

  1.3 算法及描述
  一个算法给规定了求解给定问题所需的处理步骤及其执行顺序,使得给定问题能够在有限的时间内被求解。本书采用类C语言来描述算法
  1)函数描述形式.
  函数类型 函数名(函数参数表)//算法说明
  {
  语句序列
  }
  2)输入、输出语句
  输入语句:scanf(格式串,变量1,...,变量n);
  输出语句:printf(格式串,变量1,变量n);
  3)赋值语句 变量名=表达式;
  4)选择语句
  1>条件语句:
  if(表达式)语句;
  或
  if(表达式)语句;
  else语句;
  2>分支语句:
  switch
  {case条件1:语句序列;break;
      case条件2:语句序列;break;
      case条件n:语句序列;break;
      default:语句序列;}
  其中“default:语句序列;”可以省略。
  5)循环语句
  for(赋初值表达式序列;条件;修改表达式序列)语句;
  while(条件)语句;
  do{
  语句;
  }while(条件);
  6)结束语句
  1>函数结束语句:return表达式;
  2>case结束语句break;
  3>异常结束语句:exit(异常代码);
  7)出错语句:error("错误描述")
  8)注释
  单行注释: //注释内容
  多行注释: /*注释内容*/

  1.4 算法分析
  通常评价算法好坏的因素包括以下几个方面:
  1)正确性:能正确地实现预定的功能,满足具体问题的需要。
  2)易读性:易于阅读、理解和交流,便于调试、修改和扩充。
  3)健壮性:即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果。
  4)时空性:一个算法的时空性是指该算法的时间性能(或时间效率)和空间性能(或空间效率),前者是算法包含的计算量,后者是算法需要的存储量。

  1.4.1 时间复杂度
  【例1-4】编制函数求1!+2!+...+n!。
  【分析】对于这个问题,可以写出两个算法,如图所示。
  
  两个算法的计算量不同,如何估算算法的计算量?可在算法中合理地选择一种或几种操作作为“基本操作”,对给定的输入,确定算法共执行了多少次基本操作,可将基本操作次数作为该算法的时间度量。
  假如问题的输入规模为n,—般情况下,一个算法的计算量是问题规模n的函数。设函数fact1中乘法、加法和赋值的次数记为T(n),则
  T(n)=n(n+1)/2+n+n(n+1)/2+2n+1=2(n2+n)/2+3n+1=n2+4n+1
  当n充分大时,n2这一项对T(n)的值起着支配作用,采用数学记号O(n2)表示T(n)的近似值,写为T(n)=O(n2),这种表示法称为大O表示法,它的含义是:当n充分大时,算法的执行时间与n2成正比。大O表示法的具体提法是:当且仅当存在正常数c和n0,使得:T(n)<=cf(n)。
  对所有n>n0成立。其中,f(n)为问题的规模n的某个函数,大O表示法也称为渐进表示法,它不考虑具体的运行时间,只给出算法在问题规模n下执行时间的上界。
  T(n)=O(f(n))称为算法的渐进时间复杂度,简称时间复杂度。
  常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),多项式阶O(n2)、O(n3),指数阶O(2n
  最坏时间复杂度、平均时间复杂度、最好时间复杂度

  1.4.2 空间复杂度
  一个算法的空间复杂度定义为该算法所耗费的存储空间,它也是问题规模n的函数。通常可记为:S(n)=0(g(n))其中,g(n)为问题规模n的某个函数。空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。
  一个算法在执行期间所需要的存储空间量应包括以下三个部分:
  (1)程序代码所占用的空间
  (2)输入数据所占用的空间
  (3)辅助变量所占用的空间

购买课程后,所有章节讲座可不限次数、不限时间播放学习。直至考后一周关闭!(模拟试卷于考试结束当天关闭)。

第一章 概 论
第01讲 第一章1.1-1.4
第02讲 第一章考核知识点与考核要求
第二章 线性表
第01讲 线性表
第02讲 其他运算在单链表上的实现
第03讲 第二章考核知识点与考核要求
第三章 栈、队列和数组
第01讲 栈、队列和数组(一)
第02讲 栈、队列和数组(二)
第03讲 栈、队列和数组(三)
第04讲 栈、队列和数组(四)
第四章 树和二叉树
第01讲 树和二叉树(一)
第02讲 树和二叉树(二)
第03讲 树和二叉树(三)
第04讲 树和二叉树(四)
第五章 图
第01讲 图的基本概念和图的存储结构
第02讲 图的遍历和图的应用
第03讲 考核的知识点与考核要求、重难点以及练习
第六章 查 找
第01讲 基本概念、静态查找表和二叉排序树
第02讲 散列表
第03讲 课堂练习
第七章 排 序
第01讲 概述、插入排序和交换排序
第02讲 选择排序
第03讲 小结、考核知识点和课堂训练
购买课程后可享受对所有课程记录笔记的功能 。
登录/注册后可对试听课程进行记笔记操作,笔记内容可查看和再编辑 。

学员购买课程后方可进行提问!

专职老师全天候在线答疑,学员提交到答疑板上的问题最快将在8小时内即可得到准确答复,高效答疑!

学员问答
观看该课程的人还喜欢
暂无推荐视频
下载“自考365”APP,体验更多服务
立即体验完整课程
在线客服