大话数据结构读书笔记
文章平均质量分 52
shengzhu1
scala语言编程,java语言编程
展开
-
第一章 数据的概念
数据:是描述客观事物的符号,是计算机中可以操作的对象,三能被计算机识别,并输入计算机处理的符号集合。不仅仅包括整形、实型(大概就是浮点型一类的)等数据类型,还包括字符以及声音、图像、视频等非数值类型。 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处,也被称为记录。比如人类中的人就是数据元素。 数据项:数据项是数据不可分割的最小单位,一个数据元素可以由若干个数据项构成。比如人这原创 2017-04-11 01:02:47 · 503 阅读 · 0 评论 -
7种常见排序方法总结
排序分类本章共有七种排序算法,按排序过程中借助的主要操作,分成以下几种: 插入排序类:直接插入排序,希尔排序 选择排序类:简单选择排序,堆排序 交换排序类:冒泡排序,快速排序 归并排序类:归并排序 从简单性来看,非为 简单算法:冒泡,简单选择,直接插入 改进算法:希尔(直接插入的升级),堆(简单选择的升级),归并,快速(冒泡的升级) 性能比较 排序方法 平均情况 最好情况 最坏情况原创 2017-04-26 17:39:43 · 1949 阅读 · 0 评论 -
第六章 二叉树的性质
性质一在二叉树中的第i层上至多有2(i−1)2^(i-1)个结点。 第一层是根结点,只有一个,所以2(1−1)=20=12^(1-1)=2^0=1, 第二层有两个,2(2−1)=21=22^(2-1)=2^1=2 … 通过数学归纳法,在二叉树的第i层上至多有2(i−1)2^(i-1)个结点。性质二深度为k的二叉树至多有2k−12^k-1个结点,注意是2k2^k之后再减一,而不是2(k−1)2原创 2017-04-20 00:25:19 · 605 阅读 · 0 评论 -
第六章 遍历二叉树及推导遍历结果(前序、中序和后续)
二叉树遍历方法下面几种算法是利用递归的方法实现的 - 前序遍历:先打印输出,再先序遍历左子树,最后先序遍历右子树 - 中序遍历:中序遍历左子树,再打印,最后中序遍历右子树 - 后序遍历:先后序遍历左子树,再后序遍历右子树,最后打印输出 - 总结:前序是先打印,再左右;中序是先左,再打印,最后右;后序是先左右,再打印推导遍历结果前序遍历为ABCDEF,中序遍历为CBAEDF,问二叉树的后序遍历原创 2017-04-20 13:53:01 · 10710 阅读 · 2 评论 -
第六章 二叉树
定义二叉树(Binary Tree)是n(N>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。特点 每个结点最多有两棵子树 ,所以二叉树不存在度大于2的结点。注意不是只有两棵子树,而是最多有两棵。没有子树或者有一棵子树都是可以的。 左子树和右子树是有顺序的,次序不能颠倒。就像人的左手右手一样 即使树中某结点只有一棵原创 2017-04-19 15:21:25 · 473 阅读 · 0 评论 -
第六章 树的抽象数据类型
ADT 树(tree) Data 树是由一个根结点和若干棵子树构成。树中结点具有相同数据类型及层次关系。 Operation InitTree(*T):构造空树T DestroyTree(*T):销毁树T CreateTree(*T,definition):按definition中给出树的定义来构造树 ClearTree(*T):若树T存在,则将树T情空为空原创 2017-04-19 13:56:59 · 1777 阅读 · 0 评论 -
第六章 树的定义和ADT
树的定义树(Tree)是n(n>=0)个结点的有限集。n=0时为空树,在任何一棵非空树中: 1. 有且仅有一个特定的根(Root)结点; 2. 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)树的结点树的结点包括一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点原创 2017-04-19 11:36:00 · 1106 阅读 · 0 评论 -
第四章 栈与队列
定义: 栈(Stack)是限定仅在表尾进行插入和删除操作的线性表。 把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。 队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线原创 2017-04-14 15:10:43 · 240 阅读 · 0 评论 -
第三章 线性表(顺序存储结构和单链表)
顺序存储结构和单链表对比:存储分配方式 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素 时间性能 查找 顺序存储结构O(1) 单链表O(n) 插入和删除 顺序存储结构需要平均移动表长一半的元素,时间为O(n) 单链表在线找出某位置指针后,插入和删除时间仅为O(1) 空间性能 顺序存储需要预分配存储空间,分大了浪费,小了容易上原创 2017-04-12 09:58:34 · 666 阅读 · 0 评论 -
第二章 数据结构和算法(常见的时间复杂度及比较)
执行次数函数 阶 非正式术语 12 O(1) 常数阶 2n+3 O(n) 线性阶 3*n^2+2n+1 O(n^2) 平方阶 5lgn+20 O(logn) 对数阶 2n+3nlgn+1 O(nlogn) nlogn阶 6n^3+2n^2+3n+2 O(n^3) 立方阶 2^n O(2^n) 指数阶 常用的时间原创 2017-04-11 10:55:47 · 635 阅读 · 0 评论 -
第二章 数据结构和算法(算法的定义)
算法算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 有以下五个基本特征: 1. 输入&输出:算法有零个或多个输入,至少有一个或多个输出; 2. 有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成; 3. 确定性:算法的每一步骤都有确定的含义,不会出现二义性; 4. 可行性:算法的每一步必须三可原创 2017-04-11 09:45:53 · 756 阅读 · 0 评论 -
各种查找算法分析
查找表 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。 关键字(Key)是数据元素中某个数据项的值,又成为键值,用它可以标识一个数据冤死,也可以标识一个记录的某个数据项。 若某关键字可以唯一的标识一个记录,则称此关键字为主关键字(Primary Key),这就意味着不同的记录主关键字均不同。 对于那些可以标识多个元素(或记录)的关键字,成为次关键字(Secondary原创 2017-04-27 00:35:26 · 1180 阅读 · 0 评论