12 2021 档案
摘要:Acwing 第五章 动态规划(一) 一、01背包问题 n个物品,容量为v的背包,每个物品有两个属性:体积vi,价值wi,每件物品只能用一次,目标求出最大价值是多少? f(i,j) 从1 - i 个物品中选,总体积不超过 j 集合:表示所有的选法 状态计算 #include<iostream> us
阅读全文
摘要:一、希尔排序 思路 先将待排序表分割成若干形如L[i,i+d,i+2d,…,i+kd]的“特殊”子表,对各个子表分别进行直接插入排序。缩小增量d,重复上述过程,直到d=1为止 即先追求表中元素部分有序,再逐渐逼近全局有序 过程 第三趟排序时,整个表已呈现出“基本有序”,对整体再进行一次“直接插入排序
阅读全文
摘要:一、B树 引入 如何保证查找效率? 若每个结点内关键字太少,导致树变高,要查找更多层结点,效率低 策略1:m叉查找树中,规定除了根结点外,任何结点至少有[m/2]个分叉,即至少含有[m/2]-1个关键字 [m/2]:向上取整 eg:对于5叉排序树,规定除了根结点外,任何结点至少有3个分叉,2个关键字
阅读全文
摘要:数据结构 第十一讲 散列查找(哈希) 一、散列表 编译处理时,涉及变量及属性(如:变量类型)的管理: 插入:新变量定义 查找:变量的引用 编译处理中对变量的管理:动态查找问题 利用查找树(搜索树)进行变量管理? 两个变量名(字符串)比较效率不高 是否可以先把字符串转换为数字,再处理? “散列(Has
阅读全文
摘要:数据结构 第九、十讲 排序 一、前提 统一格式 void X_Sort(ElementType A[],int N); 1.大多情况下,为简单起见,讨论从小到大的整数排序 2.N是正整数 3.只讨论基于比较的排序(>,=,<有定义) 4.只讨论内部排序 5.稳定性:任意两个相等的数据,排序前后的相对
阅读全文
摘要:数据结构 第八讲 图(下) 一、最小生成树问题 是一棵树:无回路、|V|个顶点一定有|V|-1条边 是生成树:包含全部顶点,|V|-1条边都在图里 边的权重和最小 最小生成树< >图连通 贪心算法 什么是贪?每一步都要最好的 什么是好?权重最小的边 需要约束:只能用图里面存在的边;只能正好用掉|V|
阅读全文
摘要:6.1 什么是图 图表示“多对多”的关系 图包含: 一组顶点:通常用V(Vertex)表示顶点集合 一组边:通常用E(Edge)表示边的集合 边是顶点对:(v,w)∈E,其中v,w ∈ V 有向边<v,w>表示从v指向w的边(单行线) 不考虑重边和自回路 抽象数据类型定义 类型名称:图(Graph)
阅读全文
摘要:7.1 最短路径问题 最短路径问题的抽象 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。 这条路径就是两点之间的最短路径(Shortest Path) 第一个顶点为源点(Source) 最后一个顶点为终点(Destination) 问题分类 单源最短路径问题:从某固定源点出
阅读全文
摘要:数据结构 第三讲 树 笔记 一、查找 查找:根据某个给定关键字K,从集合R中找出关键字与K相同的记录 静态查找:集合中记录是固定的,没有插入和删除操作,只有查找(查字典) 动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除 哨兵:在边界处放置,当循环进行至哨兵元素时退出,可以少写一些分支
阅读全文
摘要:第五讲 树(下) 5.1 堆(heap) 优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 Q :如何组织优先队列? 若采用数组或链表实现优先队列 数组: 插入——元素总是插入尾部 O(1) 删除——查找最大(或最小)的关键字 O(n) 从
阅读全文