数据结构复习提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件学院数据结构与算法复习提纲
(2011秋季学期)
1、Data structures and algorithms
概念:
Type: 类型(Type)是一组值的集合。
simple type:不含子结构的类型是简单类型(simple type)
composite type, aggregate type: 一个类型里含有多项信息(子结构)的类型是复杂类型(aggregate)或组合类型(composite)
data type:数据类型是指一种类型和定义在该类型上的一组操作
ADT:抽象数据类型(ADT)是指数据结构作为一个软件组件的实现
data structure:数据结构是ADT的实现
problems:从直觉上讲,问题无非是一个需要完成的任务,即一组输入就有一组相应的输出
function:函数(function)是输入和输入(定义域domain)和输出(值域range)之间的一种映射关系
algorithms:算法(algorithms)是解决问题的一种方法或一个过程
programs:一个计算机程序被认为是某种程序设计语言对一种算法的具体实现。
2、Mathematical preliminaries
概念:
Set:集合(set)是由互不相同的成员(member)和元素(element)构成的一个整体。
Sequence:序列(sequence)是一个具有顺序的元素组,并且可以有重复的元素,有时也称为元组(tuple)或向量(vector)。
Recursion:如果一种算法调用自己来完成它的部分工作,就称为这种算法是递归的(recursion)。
3、Algorithm Analysis
概念:
Asymptotic algorithm analysis:渐进算法分析(简称算法分析algorithm analysis)可以估算当问题规模变大时,一种算法及实现它的程序的功率和开销。
Growth rate:算法增长率(Growth rate)只当输入的值增长的时候,算法代价和增长速率。
Best/worst/average case:执行同一个算法达到目的最快/最慢/平均情况的一
种输入的情形。(自己总结)
Upper/lower bound:用来表示当某一类数据的输入规模为n时,某种算法消耗某种资源(通常是时间)的最大值/最小值。
Space/time tradeoff:时间/空间权衡原则,
Big-Oh/big-Omega/Theta notation:大O表示法,对于非负函数T(n),若存在两个正常数c和n0,对任意n>n0,有T(n)<=cf(n),则称T(n)在集合O(f(n))中。
大欧米伽表示法:若存在若存在两个正常数c和n0,对于n>n0,有T(n)>=cg(n),则称T(n)在集合Ω(g(n))中。
西塔表示法:当上下线相等时,可用Θ表示法,如果一种算法既在O(h(n)) 中,又在Ω(h(n)) 中,则称其为Θ(h(n))。
应用题:The efficiency of different growth rate expressions (see exercise of 3.1 and
3.3 in Page 79)
4、list
概念:
List: 线形表(List)是由成为元素的数据项组成的一种有限且有序的数列
Array-based list: 顺序表是数组实现的线性表
Linked list: 链表是利用指针实现的线性表
Ordered/unordered list:有序线性表的元素按照值得递增顺序排列。无序线性表在元素的值与位置之间没有特殊的联系。
Singly/doubly linked list: 只允许从一个表结点直接访问它的后继结点的链表称单链表。可以从一个表结点出发,在线性表中随意访问它的前驱结点和后继结点的链表成为双链表。
Array:
Stack: 栈(stack)是仅在一端进行插入或删除操作的线性表
Queue: 队列(Queue)是一种受限的线性表,只能从队尾插入(称为入栈操作enqueue)以及从队首删除(称为出栈操作)。
算法:用list/stack/queue实现一些操作,比如:排序、括号匹配检查等
5、binary trees
概念:
BST:二叉查找树(Binary Search Tree)是满足对于任意一个节点,设其值为K,则该结点左子树中任意一个结点的值都小于K,右子树中任意一结点的值都大于或等于K的二叉树。
A VL:A VL树是具有如下附加特性的BST,对于树结构的每个节点,其左右子树的高度最高差1。
Huffman tree:哈弗曼树的每个叶节点对应一个字母,叶节点的权重就是它对应字母的出现频率。权大的叶节点深度小。
Full/complete binary tree:满二叉树(full binary tree)的每一个结点或者是一个分支节点,并恰有两个非空子节点或者是叶节点。完全二叉树(Complete binary tree)有严格的形状要求:从根结点起每一层从左到右填充。
Height/depth of a binary tree:结点M的深度(depth)就是从根节点到M的路径的长度。树的高度等于最深结点的深度加一。
应用题:BST中的插入/删除,A VL的构造,Huffman树的构造,heap的构造,基于遍历序列还原二叉树
算法:基于二叉树遍历的各种算法(binary tree traversal,计算二叉树的高度,统计叶子结点个数等)
证明题:
(1) To any binary tree, if it has n0 leaf node, n2 internal node of degree=2(i.e., has two children), then n0=n2+1
(2) The number of empty subtrees in a non-empty binary tree is one more than the number of nodes in the tree.
6、general trees
概念:
Traversal: 按照一定的顺序访问二叉树的结点,成为一次周游或遍历
树的先根(前序)周游先访问根结点,再依次从左往右对每棵子树进行先根周游。树的后根(后序)周游先由左向右依次对每棵子树进行后根周游,再访问根结点。中根周游对树不具有自然的定义,一般不使用。
Equivalence classes:
看懂:traversal/UNION/FIND几个操作的实现思想
应用题:根据树的线性表示还原树(例题)
证明:
The number of leaves in a non-empty full K-ary tree is (K − 1)n + 1, where n is the number of internal nodes.
7、internal sorting
概念:
各种排序算法的best/worst/average case时间复杂度:
插入排序,起泡排序,选择排序,时间代价为(Θn2)
Shell排序,Θ(n1.5)
快速排序,Θ(nlogn)