数据结构
ZDF19
这个作者很懒,什么都没留下…
展开
-
数据结构——归并排序
归并排序,即Merge_Sort,通过递归式的merge操作(merge即归并)实现排序。算法思想是分治思想(divide and conquer)。归并排序一般是递归实现的 //递归都是一去一回,去的时候divide,回的时候conquer。(表达欠提炼)1)divide,“分” 递归地将原来无序的序列分成两部分,直到每个表所含元素个数都变成1。2)conquer,“治原创 2016-12-11 08:54:20 · 286 阅读 · 0 评论 -
数据结构——哈希
装填因子:key的个数与表长的比值。 哈希表查找成功的平均查找长度,查找失败的平均查找长度都是期望,期望怎么求,平均查找长度就怎么求。 散列表这里有两种实现方式:线性开型寻址散列,链表散列。1.线性开型寻址散列: 数组实现,数据个数不大于表长,放一个元素时,若发生冲突,则顺次线性扫描直到找到一个空位。2.链表散列: 解决了overflow问题。 什么叫查找原创 2016-12-28 17:31:47 · 442 阅读 · 0 评论 -
数据结构——哈夫曼树与哈夫曼编码
1.哈夫曼编码 Huffman code: 是一种文本压缩算法,这种算法依据的是不同符号在一段文本中相对出现的频率。假设一个文本是由a,u,x,z组成的字符串,其长度为1000,每个字符用1字节来存储,共需要1000字节,即8000位。如果每个字符用2位二进制来编码:00=a, 01=x, 10=u, 11=z.那么,用2000位空间即课表示1000个字符。此外,我们还需要一定的空间来存放编原创 2016-12-27 17:12:04 · 624 阅读 · 0 评论 -
数据结构——并查集
等价关系:满足自反,对称,传递。等价类:指相互等价的元素的最大集合。一个元素只能属于一个等价类。离线等价类问题中,已知n和R,确定所有的等价类。在线等价类问题中,初始时有n个元素,每个元素都属于一个独立的等价类。find(element)返回所属的等价类。union (class_A,class_B)把不同的类合并成一个类。combine(a,b)等价于: classA=f原创 2016-12-27 17:13:43 · 454 阅读 · 0 评论 -
数据结构——图 贪婪方法
贪心方法 greedy method: 逐步构造最有解(其实是近似最优的解)。每一步,我们都在一定的标准(这个标准叫贪婪准则 greedy criterion)下作出一个最优决策。 最优化问题 optimization problem:包含一组限制条件(constraint)和一个优化函数(optimization function)。符合限制条件的问题求解方案称为可行解(feas原创 2016-12-18 13:41:42 · 1338 阅读 · 0 评论 -
数据结构——图 动态规划
动态规划难度相对较大。它的基础是最优原理。有很多问题,用贪婪法或者分而治之无法简洁高效的解决,但是动态规划就可以。 在动态规划中,我们要考察一系列抉择,以确定一个最优抉择序列是否包含最优抉择子序列。当最优抉择包含最优抉择子序列时,可建立动态规划递归方程以帮助我们高效解决问题。 动态规划常常基于一个递推式或一个或多个初始状态。当前子问题的解将由上一个子问题的解推出。一般是多项式复杂度。原创 2016-12-19 15:23:54 · 994 阅读 · 0 评论 -
八大排序算法 简练讲解
插入,选择,冒泡,堆排序,快速排序,基数排序 。转载来自:一个理解的非常充分的简练讲解转载 2016-12-26 17:49:50 · 325 阅读 · 0 评论 -
冒泡排序最好时间复杂度为什么是O(n)?
blog链接:http://www.cnblogs.com/melon-h/archive/2012/09/20/2694941.html通过上面的博客我知道了:按照最初级的一般写法,每一次循环都比较相邻数据的大小,原数据是否有序不会影响比较次数,此时时间复杂度是O(n^2).而网上和书上的很多说O(n)是因为加了优化。初始didswap=false. 当发生一次交换就将didsw转载 2016-12-26 16:08:05 · 9796 阅读 · 5 评论 -
数据结构——线索二叉树
线索二叉树的构造 线索化:对二叉树以某种次序遍历,使其变为线索二叉树的过程。在遍历过程中,检查当前节点左右指针域是否为空,若为空,将它们改为指向前驱节点或者后继节点的线索。原创 2016-12-26 10:08:21 · 374 阅读 · 0 评论 -
数据结构——优先级队列(主要是堆)
chapter12 优先级队列, priority queue 在优先级队列中,元素出队列的顺序由元素的优先级决定。 堆是实现优先级队列效率很高的数据结构——堆,是一棵完全二叉树,用数组表示:1,1左2,1右3,2左4,2右5,3左6,3右7.12.1 定义和应用 优先级队列是0个或多个元素的集合,每个元素都有一个优先权或值。top查找,push插入,pop删除。在最小优先级原创 2016-12-25 10:07:52 · 1390 阅读 · 0 评论 -
数据结构——图 生成树
连通无向图的生成树包含原图中所有的点,树的边也是原图中存在的边。广度优先生成树(breadth-first spanning tree)是按BFS所得到的生成树。深度优先生成树(depth-first spanning tree)是按DFS所得到的生成树。原创 2016-12-16 20:51:54 · 1699 阅读 · 0 评论 -
数据结构——图 寻找一条路径
用DFS来实现 findPath 的功能。因为在深度优先搜索中,路径的边集已隐含在递归过程中,因此利用DFS设计是比较容易的。bool Network::FindPath(int v, int w, int &length, int path[]){//Find a path from v to w, return length and path in path[0:length]原创 2016-12-16 16:57:45 · 1565 阅读 · 0 评论 -
数据结构——图 最常用的概念
1.什么是图? 边集和非空顶点集的组合。2.连通: 是点与点之间的概念,是针对无向图的概念。顾名思义, 从a点到b点是可达的——a到b有路径存在,则称a和b是连通的。3.连通图: 无向图G中,任意两点之间都是连通的,则称图G为连通图。4.连通分量: 标准定义:无向图G中的极大连通子图称为连通分量。 顾名思义地分析名称是记忆概念极好的一种方法:只原创 2016-11-27 16:54:08 · 2773 阅读 · 0 评论