数据结构与算法
文章平均质量分 59
ClumsyOtter
喜欢思考,热爱编程
展开
-
数据结构与算法之单向链表 <一>
数据结构与算法是优秀的程序员都应该熟悉的 今天我们就来学习最简单也是最常用的算法之一 单向链表 首先我们应该明白链表是什么,优缺点是啥等等原创 2017-03-01 17:12:35 · 813 阅读 · 1 评论 -
数据结构与算法之广度优先<十三>
图的基本知识 图的表示方法可以参考 图的表示方法 图的深度遍历参考 这里写链接内容进入正题 图的广度遍历 顾名思义就是先把该节点的所有相连边访问一遍,再将该节点的所有相连节点作为顶点,将其所有相邻边访问一遍,之后依次类推依然使用一组图片来说明初始第一步 访问A所有边第二步 访问B所有的边 访问C所有的边访问G所有的边 由于G没有未访问的边 所以下一步访问D所有的边 由于 D没有原创 2017-04-28 20:48:03 · 473 阅读 · 0 评论 -
数据结构与算法之图的深度遍历<十四>
学习图的遍历之前得知道图的表示方法 可以参考 图的表示方法进入正题 什么是图的深度遍历算法 所谓深度遍历 就是一口气一条路走到底,再回溯重复便可达到遍历效果 一组图片来说明这个问题 深度遍历这个图第一步 第二步 依次遍历直到到最底部到达底部后 回溯重复 也就是回溯到C 然后,C开始访问未访问的边,也是访问到底部 F回溯到E E开始访问未访问的边D回溯 到 E E开始访问未访问的边原创 2017-04-28 20:25:51 · 624 阅读 · 0 评论 -
数据结构与算法之图的邻接表与邻接矩阵<十二>
现实中的许许多多的事务都是网状结构也就是图结构。当你面临一个复杂的网状关系问题。也许你已经有了解决的方法,但是如何用编程实现呢。首先的问题就是如何将网状图程序化。若是不能清楚简单的描述这些关系,对你解决问题是十分大的阻碍。同时也说明了将图的关系程序化是学习图论的基础我这里就介绍两种常用且简单的方法来描述下图邻接矩阵法 邻接矩阵法,顾名思义就是利用矩阵来描述各个节点之间的关系。将上述的图利用矩阵法表原创 2017-04-28 19:45:37 · 1345 阅读 · 0 评论 -
数据结构与算法之高级排序(希尔/堆)<十一>
插入排序希尔排序堆排序原创 2017-04-09 15:53:04 · 495 阅读 · 0 评论 -
数据结构与算法之基础排序(冒泡/插入/选择)<十>
交换排序冒泡排序插入排序选择排序原创 2017-04-09 15:51:43 · 392 阅读 · 0 评论 -
数据结构与算法之高级排序(快速/归并)<十二>
选择排序 快速排序 归并排序原创 2017-04-09 15:50:25 · 458 阅读 · 0 评论 -
数据结构与算法之优先队列<九>
二叉堆原创 2017-04-07 17:55:24 · 428 阅读 · 0 评论 -
数据结构与算法之散列(分离链接法)<七>
散列原创 2017-04-07 17:39:54 · 1037 阅读 · 0 评论 -
数据结构与算法之散列(线性/平方/双平方探测法)<八>
散列的基础知识以及分离链式法参考 上一篇 数据结构与算法之散列(分离链接法)<七>线性探测法 若产生冲突则放入下一个空闲区域 但是当数据多 需要发费很多的时间寻找空单元 更糟糕的是,即使表比较空,占据的单元会出现聚集现象,称之为一次聚集 为了解决一次聚集现象 出现了平方探测法平方探测法 当出现冲突时 寻找空闲区域的步长以平方长度来计算,i^2 就是 1 4 9 16 25 …原创 2017-04-07 17:37:49 · 3459 阅读 · 1 评论 -
数据结构与算法之AVL平衡树<六>
AVL平衡树原创 2017-03-21 19:15:57 · 731 阅读 · 0 评论 -
数据结构与算法之搜索二叉树<五>
搜索二叉树原创 2017-03-21 18:58:44 · 491 阅读 · 0 评论 -
数据结构与算法之栈与队列<四>
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操原创 2017-03-21 18:38:09 · 532 阅读 · 0 评论 -
数据结构与算法之循环链表 <三>
循环链表的介绍 在单向链表和双向链表中,都采用null作为链表的结束,然而,循环链表没有结束标志。 注意 与单向链表不同,循环链表没有next指针为null的点,循环链表在某些情况下非常有用。 比如在进程的循环调度中。循环链表的创建public class Node<E> { // 节点对象 对象应该包含储蓄的数据和指向下一个节点对象 // 利用泛型 将储存的数据类型交给使用者来原创 2017-03-11 11:57:35 · 511 阅读 · 0 评论 -
数据结构与算法之双向链表 <二>
双向链表优缺点优点 对于链表中一个给定的节点,可以从两个方向进行操作。在单向链表中只有获得节点的前驱节点才能删除这个节点。然而在双向链表中即使没有这个节点的前驱节点也能删除这个节点。缺点 1.每个节点需要添加一个额外的指针,因此需要更多的空间开销。 2.节点的插入或删除更加费时。双向链表的建立public class Node<E> { // 储存的数据 private原创 2017-03-11 11:49:03 · 636 阅读 · 0 评论 -
数据结构与算法之DFS/BFS解决扫雷问题<十五>
给你一个2D的字符矩阵作为游戏板。. ‘M’代表未发现的地雷 , ‘E’ 代表着一个未发现的空白区域, ‘B’ 代表一个没有相邻(上,下,左,右和所有4个对角线)地雷的空白方块,数字(’1’至’8’)表示与这个显示的方形相邻的地雷数量,最后是’X’ 代表一个已发现的地雷。现在给出所有未显示的游戏版(’M’或’E’)中的下一个点击位置(行和列索引),根据以下规则显示该位置后返回主板:如果一个地雷(’M原创 2017-04-29 11:00:02 · 3986 阅读 · 0 评论