posted @ 2017-11-27 22:00
随笔分类 - 数据结构实战分析
摘要:1. 通用树的回顾 (1)双亲孩子表示法 ①每个结点都有一个指向其双亲的指针 ②每个结点都有若干个指向其孩子的指针 (2)孩子兄弟表示法(二叉树) ①每个结点都有一个指向其第一个孩子的指针 ②每个结点都有一个指向第一个右兄弟的指针 (3) 孩子兄弟表示法的特点 ①能够表示任意的树形结构 ②每个结点包
阅读全文
摘要:1. 树的定义 (1)树是一种非线性的数据结构 (2)树是由个结点组成的有限集合。如果n=0,称为空树。如果n>0,则: ①有一个特定的称之为根(root)的结点 ②根结点只有直接后继,但没有直接前驱 ③除根以外的其它结点划分为m(m≥0)个互不相交的有限集合T0、T1、…Tm-1,每个集合又是一棵
阅读全文
posted @ 2017-10-28 22:44
摘要:1. 堆排序(Heap Sort) (1)堆:这里所指的堆,一般是一颗完全二叉树,同时满足以下两个性质(以大顶堆为例) ①每个父结点的键值总是大于等于其左右孩子的键值。 ②每个结点的左子树和右子树都是一个大顶堆。 (2)基本思想(以大顶堆为例): 将待排序的序列构成一个大顶堆(如图①)。此时,整个序
阅读全文
posted @ 2017-10-28 22:36
摘要:1. 选择排序 (1)基本思想:每次(例如第i次,i=1,2,…,n-2)从后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列第i个元素。 (2)实例分析 2. 插入排序 (1)插入排序的基本思想 当插入第i(i≥1)个数据元素时,前面的V[0],V[1],…,V[i-1]已经排好序
阅读全文
posted @ 2017-10-09 22:23
摘要:1. 函数调用栈的回顾 (1)用于保存函数中的实参、局部变量、临时变量等。 (2)从起始地址开始往一个方向增长(如:高地址→低地址) (3)有一个专用“指针”标识当前已使用内存的“顶部” (4)当函数调用结束时,栈会恢复到被调用前的状态。可以利用这个时机进行一些的回溯算法的设计。 【实例分析】函数调
阅读全文
posted @ 2017-09-12 23:27
摘要:1. 朴素算法的改进 (1)朴素算法的优化线索 ①因为 Pa != Pb 且Pb==Sb;所以Pa != Sb;因此在Sd处失配时,子串P右移1位比较没有意义,因为前面的比较己经知道了Pa != Sb,可以利用己经比较过的事实,而不必进行第2轮的比较,从而提高效率。 ②KMP算法就是为解决这一问题而
阅读全文
posted @ 2017-08-18 21:27