数据结构复习提纲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档