数据结构
黑子小明
这个作者很懒,什么都没留下…
展开
-
二分查找
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5 2.寻找{6, 7, 8,转载 2015-03-30 10:44:28 · 392 阅读 · 0 评论 -
查找算法
查找算法 一、查找的基本概念查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。 二、顺序查找说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。【适用性】:适用于线性表的顺序存储结构和链式存储结构。平均查找长度=(n+1)/2.时间复杂度为O(n)。 三、折半查转载 2015-03-30 22:45:42 · 966 阅读 · 0 评论 -
Hash表
理解Hash哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射。这样的对应关系在现实生活中很常见,比如: A -> B转载 2015-03-30 23:06:59 · 913 阅读 · 0 评论 -
排序算法
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。 上面的这张图来自一个PPT。它概括了数据结构中的所有常见的排序算转载 2015-03-30 23:04:46 · 333 阅读 · 0 评论 -
图
一、基本术语图:由有穷、非空点集和边集合组成,简写成G(V,E);Vertex:图中的顶点;无向图:图中每条边都没有方向;有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b)有向边:边是有方向的,写为有向边也成为弧;开始顶点称为弧尾,结束顶点称为弧头;简单图:不存在指向自己的边、不存在两条重复的边的图;无向完转载 2015-03-30 22:34:28 · 481 阅读 · 0 评论 -
二叉树
定义最多有两棵子树的有序树,称为二叉树。二叉树是一种特殊的树。递归定义:二叉树是n(n>=0)个有限结点构成的集合。N=0称为空二叉树;n>0的二叉树由一个根结点和两互不相交的,分别称为左子树和右子树的二叉树构成。二叉树中任何结点的第1个子树称为其左子树,左子树的根称为该结点的左孩子;二叉树中任何结点的第2个子树称为其右子树,左子树的根称为该结点的右孩子。如下图是一个二叉树:转载 2015-03-30 22:22:32 · 465 阅读 · 0 评论 -
(图)广度优先遍历
广度优先遍历是连通图的一种遍历策略。其基本思想如下:1、从图中某个顶点V0出发,并访问此顶点;2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;3、重复步骤2,直到全部顶点都被访问为止。例如下图中:1.从0开始,首先找到0的关联顶点3,42.由3出发,找到1,2;由4出发,找到1转载 2015-03-30 15:15:32 · 398 阅读 · 0 评论 -
(图)深度优先遍历
深度优先遍历是连通图的一种遍历策略。其基本思想如下:设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y);若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从转载 2015-03-30 15:15:05 · 634 阅读 · 0 评论 -
(堆)栈
(堆)栈概述栈是一种特殊的线性表,是操作受限的线性表栈的定义和特点•定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈•特点:先进后出(FILO)或后进先出(LIFO)栈的结构如下图所示:线性表的操作主要包括:(1)清空(堆)栈(2)判断是否为空(3)元素转载 2015-03-30 22:18:17 · 270 阅读 · 0 评论 -
队列
队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。–队尾(rear)——允许插入的一端–队头(front)——允许删除的一端队列特点:先进先出(FIFO)队列的结构如下图所示:线性表的操作主要包括:转载 2015-03-30 22:14:46 · 600 阅读 · 0 评论 -
线性表
线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。顺序表结构模型图顺序存储结构内存结构示意图 单向循环链表结构模型带头结点的单链结构 (a)空链; (b)非空链 双向循环链表结构模型带头结点的双循环链结构 (a)空链; (b转载 2015-03-30 22:05:10 · 337 阅读 · 0 评论 -
霍夫曼编码压缩
哈夫曼编码步骤:一、对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F= {T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算 法,一般还要求以Ti的权值Wi的升序排列。)二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为转载 2015-03-30 23:20:12 · 1414 阅读 · 0 评论 -
数据结构
为了找个实习不得不重新对数据结构恶补一下,也方便今后的学习。下面只罗列了一些基础的数据结构内容:线性表队列堆栈二叉树图查找排序hash表霍夫曼编码转载 2015-03-31 13:55:04 · 378 阅读 · 0 评论