数据结构-THU-2018
文章平均质量分 61
愉贵妃珂里叶特氏海兰
日拱一卒无有尽,功不唐捐终入海
展开
-
数据结构THU2018 - 高级搜索树
0x01. B树1.大数据越来越小的内存:系统存储容量的增长速度 << 问题规模的增长速度事实1: 不同容量的存储器,访问速度差异悬殊。若一次内存访问需要一秒,则一次外存访问需要一天。->使用cache事实2: 从磁盘中读取1B,几乎与读取1KB一样快->以页(page)或块(block)为单位,使用缓冲区->单位字节的平均访问时间大大缩短。2.结构兄弟既翕,和乐且湛。–《诗经·小雅·棠棣》B树其实就是平衡的多路搜索树的一种等价变换,把搜索树的d代“压扁”,合原创 2021-05-01 22:49:43 · 191 阅读 · 0 评论 -
数据结构 THU 2018 - 堆
二叉堆(Binary Heap)没什么神秘,性质比二叉搜索树 BST 还简单。其主要操作就两个,sink(下沉)和 swim(上浮),用以维护二叉堆的性质。其主要应用有两个,首先是一种排序方法**「堆排序」,第二是一种很有用的数据结构「优先级队列」**。本文就以实现优先级队列(Priority Queue)为例,通过图片和人类的语言来描述一下二叉堆怎么运作的。一、二叉堆概览首先,二叉堆和二叉树有啥关系呢,为什么人们总数把二叉堆画成一棵二叉树?因为,二叉堆其实就是一种特殊的二叉树(完全二叉树),只不原创 2021-04-27 23:18:10 · 136 阅读 · 0 评论 -
数据结构 THU2018 - 第九章. 哈希
1. 哈希的引入????哈希存储的基本思想是以关键字(key)为自变量,通过散列函数或哈希(Hash)函数,计算出函数值(哈希地址),作为数据元素的地址,并将数据元素存入相应地址的存储单元中。查找时再根据要查找的关键字使用同样的散列函数计算出哈希地址,然后直接到相应的存储单元中取出元素即可。例:假设有一个集合:S={16,76,63,57,40},使用Hash法存储该集合。现选取哈希函数:h(K)=K%m. 即关键字值对m(正整数)取余作为哈希地址。本例中集合元素个数n等于5,为了能他们的使哈希值原创 2021-04-21 15:06:36 · 325 阅读 · 0 评论 -
数据结构 - 二叉搜索树, AVL树
这几天写OS lab写的焦虑爆棚,好在现在写完了lab4/7. 又忙活哥大入学的事情,最终结论是可以先快乐网课一学期。所以最近都没更新博客,my apologies…1.二叉搜索树1.1 定义一个节点的左后代都比它小,右后代都比它大。对BST做中序遍历,是单调非降的。1.2 二叉搜索树的查找对二叉搜索树做查找,相当于对一个有序向量做二分查找。TreeNode* search(TreeNode* root, int val){ //找到树里值为val的节点,成功时返回该节点,失.原创 2021-03-27 20:07:12 · 201 阅读 · 0 评论 -
数据结构THU2018 - 图
1. 图的表示1.1 邻接矩阵两个节点之间要是有边,就在矩阵中标记为边权重;如果没有边,就标记为0.1.2 关联矩阵每个节点对应一个边集:1.3 邻接表为了节省空间,每个节点只需保存一个与其相连的节点列表:空间复杂度:有向图:O(n+e)无向图: O(n+2e), 因为边被保存了两次2. 广度优先搜索3. 深度优先搜索4. 拓扑排序顺序输出零入度节点5. 最小生成树Prim算法:实例:6. 最短路径实例:...原创 2021-03-18 23:22:56 · 110 阅读 · 0 评论 -
数据结构THU2018 - 树
1. 树的节点定义每个节点都指向一个parent(根节点除外),每个节点可以有一个左孩子,一个右孩子。struct Node{ Node* parent = NULL; Node* left_child = NULL; Node* right_child = NULL; int data = -1; Node(int e){ data = e; } Node* InsertAsLC(int e){ //插入左节点原创 2021-03-16 10:58:35 · 113 阅读 · 0 评论 -
数据结构 - 知识索引
索引:原创 2021-02-10 09:26:01 · 161 阅读 · 0 评论 -
数据结构THU2018 - 栈
1. 栈的构造用vector来自定义栈:class stack{ vector<char> stack_; int size = 0;public: void push(char c){ stack_.push_back(c); size++; } int top(){ return stack_[size-1]; } int pop(){ size --;原创 2021-03-13 22:33:00 · 128 阅读 · 0 评论 -
数据结构 THU2018 - 列表
1. 列表的构造1.1 节点定义struct Node{ int data; Node * next = NULL; Node * prev = NULL; Node(int data){ this->data = data; }};int main() { Node * head = new Node(-1); Node * tail = new Node(-1); head->next = tail;原创 2021-03-10 19:58:21 · 94 阅读 · 0 评论 -
数据结构 THU2018 - 向量
1. 二分查找int binary_search(int*A,int target,int low, int high){ if(low > high){ return -1; } int middle = (low+high)/2; if(A[middle] == target) return middle; if(A[middle]<target){ return binary_search(A,ta原创 2021-03-10 19:21:09 · 84 阅读 · 1 评论 -
数据结构 THU2018 - 绪论
迭代与递归1. 减而治之例. 数组翻转迭代方法:void Reverse(int *A, int low, int high){ while(low < high){ int tmp = A[low]; A[low] = A[high]; A[high] = tmp; low++; high--; }}递归方法:void Reverse(int *A, int low, int high原创 2021-03-10 15:03:41 · 152 阅读 · 0 评论