数据结构
详细介绍常用的基本数据结构,并用Java语言作具体的实现。
回_憶
这个作者很懒,什么都没留下…
展开
-
利用栈Stack实现队列(Queue)
实现说明: 入队时,将元素压入s1; 出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队; 这个思路,避免了反复“倒”栈,仅在需要时才“倒”一次。 package com.knowledgeStudy.threadLocal; import java.util.Stack; public class MyQueue原创 2015-07-15 15:04:18 · 1457 阅读 · 0 评论 -
ConcurrentHashMap源码解读
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发转载 2015-03-13 21:14:35 · 712 阅读 · 0 评论 -
贪婪算法 ---马踏棋盘
package com.dataconstructor.greedy; /*马踏棋盘问题,用贪婪算法 */ public class HorseStep { //定义参数,x方向 y方向的增量要一致 private static final int [] dx={-1,-2,-2,-1,1,2,2,1};// x方向的增量 private static fi原创 2014-11-19 19:11:10 · 874 阅读 · 0 评论 -
贪婪算法--背包问题详解
package com.dataconstructor.greedy; import java.util.Arrays; /* [背包问题]有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 物品 A B C D E F G 重量(weight) 35 30 60 50 40 10 25 价值(value)原创 2014-11-19 19:08:53 · 1659 阅读 · 0 评论 -
数据结构之hash表,HashMap简单实现
一、Hash表概念 在查找表中我们已经说过,在Hash表中,记录在表中的位置和其关键字之间存在着一种确定的关系。这样我们就能预先知道所查关键字在表中的位置, 从而直接通过下标找到记录。使查找时间复杂度接近O(1)。 1)哈希(Hash)函数是一个映象,即: 将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可; 2)由于哈希函数是一个压缩原创 2014-12-26 19:15:14 · 581 阅读 · 0 评论 -
KMP算法
package com.abstractdatatype.string; /*字符串匹配的KMP算法*/ public class StringMatch_KMP { public static void main(String[] args) { String s = "abbabbbbcab"; // 主串 String t = "bbcab"; // 模式串原创 2014-11-05 21:38:37 · 449 阅读 · 0 评论 -
二分法查找
package com.abstractdatatype.search; /*二分法查找*/ public class BinarySearch { public static void main(String[] args) { int [] a=new int [] {1,2,3,4,5,7,8,9}; int index=BinarySearch.binarySearch原创 2014-11-05 21:34:46 · 417 阅读 · 0 评论 -
数据结构-快速排序 java实现
快速排序又可以分为冒泡排序原创 2014-11-15 09:14:31 · 539 阅读 · 0 评论 -
数据结构-插入排序 java实现
插入排序又可分为原创 2014-11-15 09:04:03 · 481 阅读 · 0 评论 -
数据结构之树
一、树的基本定义:树(tree)是N(N>=0)个结点的有限集合。在任意的一棵树中有且只有一个特定的根(root)节点 ;当n》1时其余节点可分为m个互不相交的有限集,每个集合的本身就是一棵树。 二、二叉树的定义:它的特点是每个节点最多只有两棵子树(二叉树中不存在度大于2的节点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。 三、树的一些名词的含义:度:表示节点拥有的子树数;叶子(终端节原创 2014-12-07 19:42:00 · 624 阅读 · 0 评论 -
数据结构之栈
1、定义:栈(stack)是限制在插入和删除只能在一个位置进行操作的一种表结构,该合位置是表的末端,称作栈顶(top),对栈的基本操作的push()进栈和pop()出栈,一般栈都具有先进后出的特征。栈也不可能被放满。栈的结构图如下: 2、栈的实现方法: a、栈的链表实现:通过在顶端插入元素实现push(),通过删除顶端元素来实现pop(),top操作表示返回到栈顶, /*使用链结构来原创 2014-12-07 21:13:23 · 557 阅读 · 0 评论