
数据结构(C++语言版)书+视频的笔记
文章平均质量分 92
邓俊辉主编的数据结构,自己的一些学习记录
CptOctopus
这个作者很懒,什么都没留下…
展开
-
数据结构 第十二章排序(快速排序 希尔排序)
数据结构 第十二章排序快速排序基础快速排序算法快速排序变种希尔排序邮资问题快速排序基础快速排序算法思想:和归并排序类似,将序列分为两个子序列,彼此独立且其中一个子序列的所有元素都大于另一个序列,划分为子序列后分别排序再组合归并排序的难点在于合,快速排序的难点在于分轴点:左/右侧元素均不比它更大/小,相当于序列的中值,所以快速排序的重点是找到轴点即完成快速划分算法partition构造轴点pivot:初始情况设置序列的首元素为轴点,设立lo和hi两个标点,lo之前的元素L不大于轴点pivot,hi原创 2020-06-11 16:14:20 · 367 阅读 · 0 评论 -
数据结构 第十一章 串
数据结构 第十一章 串蛮力匹配原创 2020-06-08 16:35:09 · 181 阅读 · 0 评论 -
数据结构 第十章 优先级队列(完全二叉堆 左式堆)
数据结构 第十章 优先级队列循优先级访问:按照任务的优先级来决定任务的处理顺序原创 2020-06-01 16:40:07 · 828 阅读 · 0 评论 -
数据结构 第九章 词典(散列 桶排序)
数据结构 第九章 词典不同数据结构访问方式:循秩、循位置、循关键码、循值VectorListBSTHashingrankposikeyvalue原创 2020-05-31 10:40:26 · 502 阅读 · 0 评论 -
数据结构 第八章 高级搜索树(伸展树 B-树 红黑树)
数据结构 第八章 高级搜索树伸展树伸展树二叉搜索树数据访问局部特性:1.刚刚被访问的结点,极有可能在不久之后再次被访问2.将被访问的下一结点,极有可能就处在不久之前被访问的某个结点附近伸展树:将二叉树刚刚被访问的结点“转移”到树根,即可加速访问操作双层伸展:1.子孙异侧:zig-zag或者zag-zig,子结点和孙结点分别为左右孩子,类似于AVL树的双旋调整2.子孙同侧:zig-zig或zag-zag,子结点和孙结点同为左节点或者右节点,此时旋转顺序应该为祖结点g->父节点p->原创 2020-05-16 15:41:50 · 489 阅读 · 0 评论 -
数据结构 第七章 二叉搜索树(BST BBST AVL树)
数据结构 第七章 二叉搜索树概述平衡二叉树BSTBST:查找BST:删除BST:平衡与等价AVL树概述词条(结点)由Key和Value构成,且Key可以比较大小顺序性:任一结点均不小于其左孩子,不大于其右孩子(此处包括了左右孩子的所有子结点)单调性:BST的中序遍历必然单调非降,树根结点的左侧子结点必然在遍历中根结点的左侧,右子结点在根结点右侧,所有结点的投影即为BST的中序遍历平衡二叉树BSTBST:查找因为BST是有序的,所以查找结点e即与根结点v比较,如果e小于v则进入左子树,再与左子原创 2020-05-14 14:46:01 · 350 阅读 · 0 评论 -
数据结构 第六章 图 (广度优先BFS;深度优先DFS;有向图;无向图)
数据结构 第六章 图概述广度优先搜索概述邻接关系:顶点和顶点间的关系关联关系:顶点和边的关系邻接矩阵:n个顶点,则为n×n,元素为1表示顶点间有关联关联矩阵:n行表示n个顶点,e列表示e条边枚举点的所有邻居广度优先搜索将图划分为若干种等价类(图中的环路圈),同一等价类内各顶点的边不会被采纳,连接相邻等价类顶点的边会被采纳,但是不一定会被采纳。这样能是的图划分为极大无环图,则...原创 2020-05-03 09:44:11 · 659 阅读 · 0 评论 -
数据结构 第五章 二叉树 (先序遍历中序遍历递归迭代实现;层次遍历)
数据结构 第五章 二叉树树树向量和列表无法兼顾查找(静态操作)和插入移动(动态操作),树结构可以兼顾原创 2020-04-29 14:00:49 · 388 阅读 · 0 评论 -
数据结构 第四章 栈和队列
数据结构 第四章 栈和队列栈的实现栈的应用:进制转换(逆序输出)栈的应用:括号匹配(递归嵌套)栈的实现使用向量来构成栈,向量首部为栈底,不可倒置,否则复杂度会上升为O(n)template <typename T> class Stack:public Vector<T>{void push(T const &e){insert(size(),e);}T ...原创 2020-04-24 13:09:58 · 230 阅读 · 0 评论 -
数据结构 第三章 链表
第三章 链表接口与实现接口与实现静态操作:get、search动态操作:insert、remove静态存储:如向量,物理次序与逻辑次序严格一致,在静态操作上迅速,动态慢,get–O(1),search–O(logn)动态存储:如果链表,动态的分配和回收内存空间链表中,相邻结点互称为前驱和后继,链表一般采用循位置访问...原创 2020-04-17 20:15:26 · 183 阅读 · 0 评论 -
数据结构 第二章 向量(下)
向量(下)有序向量Fibonacci查找有序向量二分查找(改进版)有序向量二分查找(完美版)有序向量插值查找有序向量Fibonacci查找在二分查找中,左右分支关键码比较次数不同,而递归深度却相同,所以考虑让右分支尽可能短,即右分支递归深度尽可能浅设向量总长度为某个Fabonacci数减一 ,n=fib(k)−1n=fib(k)-1n=fib(k)−1,则可取mi=fib(k-1)-1,此...原创 2020-03-27 21:35:33 · 243 阅读 · 0 评论 -
数据结构 第二章 向量(上)
向量(上)(a)接口与实现(b)向量的加倍式扩容(c )有序向量有序向量的唯一化(a)接口与实现//构造函数:Vector(int c=DEFAULT_CAPACITY, int s = 0, T v=0){_elem = new T[_capacity =c];//_capacity为实际物理容量,_size为当前大小//复制构造函数,使用指针而并非引用Vector(T const...原创 2020-03-26 12:09:28 · 227 阅读 · 0 评论 -
数据结构 第一章 绪论(下)
(d)算法分析为了确定算法的复杂度,不需要统计累计执行次数复杂度分析的主要方法:迭代:级数求和递归:递归跟踪 + 递推方程级数1)算数级数:与末阶平方同阶2)幂方级数:比幂次高一阶3)几何级数:与末阶高同阶4)收敛级数:常数复杂度其他级数循环蓝色字体中的变脸n可以看做01Operation执行的次数其复杂度可以表示为二维图形的面积,如下:相当于对j轴...原创 2020-03-12 17:39:57 · 170 阅读 · 0 评论 -
数据结构 第一章 绪论(上)
(a)计算判断算法最重要的性质是——efficiecy效率(b)计算模型DSA(Data Structure + Algorithim)TA(n)T_A(n)TA(n)=算法A求解某一问题规模为n的实例所需要的计算成本,讨论特定算法A时,简记为T(n)T(n)T(n)对于同一问题的不同规模,计算成本差距大(例如平面点最小面积三角形问题),稳妥起见,只关注最坏情况下,取TM图灵机模型...原创 2020-03-08 14:19:36 · 235 阅读 · 0 评论