
数据结构
文章平均质量分 78
TimeTDIT
不驰于空想,不骛于虚声。
展开
-
java中ArrayList的源码实现
java中ArrayList的底层实现原创 2017-10-16 20:11:30 · 615 阅读 · 0 评论 -
Java实现单向链表及其常见操作
本文将使用Java实现链表以及链表的常用操作。一、什么是链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,而且由于没有闲置的内存,因此空间效率比数组高。其插入操作可达到O(1)复杂度,但是查找或者访问特定的结点复杂度是O(n)。二、单向链表的元素增加实现 ...原创 2018-01-15 15:49:10 · 10745 阅读 · 0 评论 -
数据结构--图
部分转载自http://blog.youkuaiyun.com/hguisu/article/details/7712813图的表示1、邻接表邻接表的核心思想就是针对每个顶点设置一个邻居表。2、邻接矩阵邻接矩阵的核心思想是针对每个顶点设置一个表,这个表包含所有顶点,通过True/False来表示是否是邻居顶点。概述图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操...转载 2018-02-24 20:33:38 · 606 阅读 · 0 评论 -
红黑树
转载自http://www.cnblogs.com/CarpenterLee/p/5525688.html本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。总体介绍Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通...转载 2018-02-22 00:08:52 · 322 阅读 · 0 评论 -
字典树
转载自https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。...转载 2018-02-21 17:12:45 · 282 阅读 · 0 评论 -
B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
转载自http://blog.youkuaiyun.com/cangchen/article/details/44817807 今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片不仅占用了存储空间,而且降低了数据库运行的速度。如果发现索引中存在过多的...转载 2018-02-20 00:51:56 · 364 阅读 · 0 评论 -
java中Hashtable和HashMap的区别
文转自 http://www.importnew.com/7010.htmlHashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很...转载 2018-02-08 10:15:49 · 465 阅读 · 0 评论 -
使用java实现链式存储的二叉树
上一篇文章写了使用java实现顺序存储的二叉树,这次接着使用java实现链式存储的二叉树:首先创建一个结点类TreeNode<E>:package com.linkedTree;public class TreeNode<E> { private E item; private TreeNode<E> leftChild; priva...原创 2017-11-18 12:09:01 · 984 阅读 · 0 评论 -
拉链法解决哈希冲突的方式和几种常见的散列函数
本文探讨拉链表解决哈希冲突的方式和几种常见的散列函数。 首先,什么是散列表? 对于一个数组,我们在O(1)时间复杂度完成可以完成其索引的查找,现在我们想要存储一个key value的键值对,我们可以根据key生成一个数组的索引,然后在索引存储这个key value键值对。我们把根据key生成索引这个函数叫做散列函数。显而易见,不同的key有可能产生相同的索引,这就叫做哈希碰撞,原创 2018-01-24 16:10:34 · 8161 阅读 · 0 评论 -
几种基本数据结构--栈、队列、双向链表、有根树的分析和简单实现
本文介绍几种基本数据结构--栈、队列、双向链表、有根树。一、栈 栈不用多说了,一种LIFO(后进先出)的数据结构,我们使用Java实现其入栈(PUSH),出栈(POP)的基本操作:public class Stack { public final static int DEFAULTSIZE = 10; private final E[] elements;原创 2018-01-23 17:17:46 · 1611 阅读 · 0 评论 -
java中Vector的实现
Java的Vector底层实现原创 2017-12-18 20:09:01 · 3809 阅读 · 1 评论 -
Java中HashSet的实现
Java中HashSet的实现原创 2017-12-20 11:27:03 · 451 阅读 · 0 评论 -
使用Java实现最大堆
Java实现最大堆原创 2017-11-20 18:10:20 · 1092 阅读 · 0 评论 -
使用java实现顺序存储的二叉树
Java实现顺序存储的二叉树原创 2017-11-17 17:18:16 · 7372 阅读 · 0 评论 -
jdk中的HashMap的实现
jdk中的HashMap底层实现转载 2017-11-12 22:44:08 · 396 阅读 · 0 评论 -
jdk中的LinkedList的实现
jdk中的LinkedList转载 2017-11-12 22:16:05 · 237 阅读 · 0 评论 -
通过位运算高效求绝对值
使用移位求绝对值原创 2017-10-23 13:58:48 · 4538 阅读 · 0 评论 -
C++实现链表队列
C++实现链表队列原创 2017-09-10 21:23:09 · 17343 阅读 · 2 评论 -
数据结构--二叉树
二叉树的实现、广度优先遍历和递归、非递归的深度优先遍历,思路在注释中:package 二叉树;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;public class BinaryTree<E> { public static class TreeNode<E&...原创 2018-02-25 15:36:25 · 324 阅读 · 0 评论