关于循环队列:循环队列是顺序存储结构的,所以由数组实现。采用循环的方式实现队列是有好处的的,原因是队列如果采用数组实现时,如果不采用循环(或者说回绕)的方式,第一种情况是在出队时需要移动队列中后续元素,效率低;第二种情况是如果入队出队频繁,存储空间浪费太大。高一凡的《数据结构算法实现与解析》对这三种...
分类:
其他好文 时间:
2015-04-27 18:20:43
阅读次数:
159
参考书籍《数据结构与算法分析——C语言描述》
插入排序,简而言之,就是对于第i个数,前i-1个数是已排序的,第i个数则要从第i-1个数开始往前遍历,比较大小,比它大的往后移一位,比它小的则其后为要的插入的位置,则在此处插入即可。插入后会发现前i个数都变成已排序的了(此处应注意体会)。于是依此类推插入第i+1个数。此方法最坏的时间复杂度也会达到O(n^2)的。
例如初始序列:
34 8
6...
分类:
编程语言 时间:
2015-04-27 17:01:38
阅读次数:
176
分析:
dlx是从数据结构角度优化01矩阵精确覆盖和重复覆盖的数据结构,它用十字链表只存贮矩阵中的非0元,而01矩阵精确覆盖dfs过程中矩阵会越来越稀疏而且每次恢复现场会浪费大量时间,dlx恰好能解决这两个问题。本题关键是将数独问题转化为01矩阵精确覆盖。数独转化为精确覆盖问题的方法还是参照Knuth的论文,如果读取到一个格子是空的,那么加9行,分别表示这个格子填1到9这9个数字,如果读取到的格...
分类:
其他好文 时间:
2015-04-27 16:57:30
阅读次数:
264
Writer:BYSocket(泥沙砖瓦浆木匠)
微博:BYSocket
豆瓣:BYSocket
一、前言
泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标:
专注很重要。专注Java 基础 + H5(学习)
其他操作系统,算法,数据结构当成课外书博览。有时候,就是那样你越是专注方面越多对自己打击越大学啥啥都...
分类:
编程语言 时间:
2015-04-27 15:19:21
阅读次数:
266
题目描述:
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间的边的个数。写一个程序,求一颗二叉树中相距最远的两个节点之间的距离。
分析与解答:
根据相距最远的两个节点一定是叶子节点这个规律,我们可以进一步讨论。
对于任意一个节点,以该节点为根,假设这个根有K个孩子结点,那么相距最远的两个节点U和V之间的路径与这...
分类:
其他好文 时间:
2015-04-27 15:18:50
阅读次数:
104
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocket一、前言 泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标:专注很重要。专注Java 基础 + H5(学习) 其他操作系统,算法,数据结构当成课外书博览。有时候,就是那样你越是专注方面越...
分类:
编程语言 时间:
2015-04-27 15:03:43
阅读次数:
248
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes、lists、 sets 和sorted set.....
分类:
其他好文 时间:
2015-04-27 12:56:33
阅读次数:
183
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目、经典面试编程题、大型网站技术架构、操作系统、数据库、软件测试、设计模式、UML等内容,同时还对很多知识点进行了深入的剖析,例如h...
分类:
编程语言 时间:
2015-04-27 11:16:06
阅读次数:
281
??
字典树:又称为Trie,是一种用于快速检索的多叉树结构。Trie把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。
注意:和二叉查找树不同的是,其节点并非存储一个元素。
优点:1、利用公共内存,以达到节约内存的目的
2、根节点只存储其子树,不存储字母
3、每个节...
分类:
其他好文 时间:
2015-04-27 09:57:28
阅读次数:
126
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于
数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与
数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(...
分类:
编程语言 时间:
2015-04-27 09:56:07
阅读次数:
110