E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【JAVA数据结构】
Java数据结构
和算法——数组、单向链表、双向链表
概要线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。本文先介绍线性表的几个基本组成部分:数组、单向链表(One-wayLinkedList)、双向链表(two-waylinked-list)。数组数组有上界和下界,数组的元素在上下界内是连续的。存储10、20、30、40、50的数组的示意图如下:数组的特点:1.数据是连续的;2.随机访问速度快。数组中稍微复杂一点的是多
jdsjlzx
·
2016-06-21 22:00
算法
链表
线性表
Java数据结构
和算法——开篇
如果说Java是自动档轿车,C就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从A开到B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。如果你对这两件事都不感兴趣也就罢了,数据结构懂得用就好。但若你此生在编程领域还有点更高的追求,数据结构是绕不开的课题。
jdsjlzx
·
2016-06-19 10:00
数据结构
Java数据结构
源码分析-Vector
1.VectorVector和ArrayList都是通过数组来构建顺序列表的数据结构,其关系同HashMap与HashTable一样,Vector是一个线程安全的数据结构,而ArrayList是非线程安全的,因此在不考虑多线程的情况下,ArrayList比Vector速度更加的快,在考虑线程安全的情况下,ArrayList提供了SynchronizedList类来保证线程安全,其访问速度同Vect
CWeeYii
·
2016-06-05 21:48
Java
Beginner
Java数据结构
源码分析-Vector
1.VectorVector和ArrayList都是通过数组来构建顺序列表的数据结构,其关系同HashMap与HashTable一样,Vector是一个线程安全的数据结构,而ArrayList是非线程安全的,因此在不考虑多线程的情况下,ArrayList比Vector速度更加的快,在考虑线程安全的情况下,ArrayList提供了SynchronizedList类来保证线程安全,其访问速度同Vect
CWeeYii
·
2016-06-05 21:00
java
数据结构
源码
线程安全
Java数据结构
源码分析-LinkedList
1.LinkedListLinkedList是通过双向链表来维护链表的顺序性。首先,我们看下类的构成,LinkedList通过两个iterator来顺序和倒序的访问数据。publicclassLinkedListextendsAbstractSequentialListimplementsList,Deque,Cloneable,java.io.Serializable{privatestatic
CWeeYii
·
2016-06-05 21:49
Java
Beginner
Java数据结构
源码分析-ArrayList
1.ArrayList简介ArrayList是基于数组实现的顺序容器,其具有O(1)速度的访问的特点。其结构比较简单,因为我们快速的看下其中比较重要的几个方法。//ArrayList在调用构造函数的时候,分配数组的内存publicArrayList(intinitialCapacity){super();if(initialCapacityc){elementData=c.toArray();si
CWeeYii
·
2016-06-05 16:06
Java
Beginner
Java数据结构
源码分析-ArrayList
1.ArrayList简介ArrayList是基于数组实现的顺序容器,其具有O(1)速度的访问的特点。其结构比较简单,因为我们快速的看下其中比较重要的几个方法。//ArrayList在调用构造函数的时候,分配数组的内存 publicArrayList(intinitialCapacity){ super(); if(initialCapacityc){ elementData=c.toArray(
CWeeYii
·
2016-06-05 16:00
java
数据结构
源码
函数
ArrayList
Java数据结构
源码分析-HashTable
1.HashTableHashTable同HashMap在数据结构的层面上是一致的,同时通过数组+链表的形式来存储数据。其方法的功能和实现方式也基本一致。就不在此处赘述,如果要详细了解可以参看HashMap的源码分析:http://blog.csdn.net/cweeyii/article/details/51583154下面我们给出下几个重要方法的对比://HashMap的Put方法public
CWeeYii
·
2016-06-05 15:35
Java
Beginner
Java数据结构
源码分析-HashSet
1.HashSetHashSet和HashMap在本质上是一样的,其实HashSet是一种特殊的HashMap,其所有的Entry中的value都是一个私有的对象。privatestaticfinalObjectPRESENT=newObject();publicHashSet(){map=newHashMapnewSet=(HashSet)super.clone();newSet.map=(Ha
CWeeYii
·
2016-06-05 14:30
Java
Beginner
Java数据结构
源码分析-HashSet
1.HashSetHashSet和HashMap在本质上是一样的,其实HashSet是一种特殊的HashMap,其所有的Entry中的value都是一个私有的对象。privatestaticfinalObjectPRESENT=newObject();publicHashSet(){map=newHashMapnewSet=(HashSet)super.clone();newSet.map=(Ha
CWeeYii
·
2016-06-05 14:30
Java
Beginner
Java数据结构
源码分析-HashMap
1.HashMap1.1Map接口在开始介绍HashMap的源码前,我们先来了解下HashMap的在内存的数据组织方式:整个结构分为两部分,第一部分是一个Entry[]数组,其数组的索引就是hash之后的slot位置。第二部分是一个链表,每个Entry对象都会有一个Entrynext的引用指向下一个Entry对象,如此当出现冲突时,只需要将冲突的数据加入到链表中就行了接下来,我们来看看Map的接口
CWeeYii
·
2016-06-04 10:06
Java
Beginner
Java数据结构
源码分析-前言
1.Cloneable和Serializable从声明中有两点是需要说明的,其也存在与其他的集合结构中Cloneable和SerializablepublicclassHashSetextendsAbstractSetimplementsSet,Cloneable,java.io.Serializable{}1.1Cloneabale从下面片段可以看到Cloneable接口并没有任何的方法,其是一
CWeeYii
·
2016-06-03 22:21
Java
Beginner
Java数据结构
源码分析-前言
1.Cloneable和Serializable从声明中有两点是需要说明的,其也存在与其他的集合结构中Cloneable和SerializablepublicclassHashSetextendsAbstractSetimplementsSet,Cloneable,java.io.Serializable{}1.1Cloneabale从下面片段可以看到Cloneable接口并没有任何的方法,其是一
CWeeYii
·
2016-06-03 22:21
Java
Beginner
《
Java数据结构
和算法(第二版)》读书笔记
第2,3章数组和简单排序publicclassArrayBub{privatelong[]a;privateintnElems;//数组长度publicArrayBub(intmax){a=newlong[max];nElems=0;}//插入publicvoidinsert(longnum){a[nElems]=num;nElems++;}//显示publicvoiddiaplay(){for(
jlinglinglei
·
2016-05-19 13:56
读书笔记
[
Java数据结构
]从源码分析HashMap
HashMapHashMap和Hashtable的区别:Hashtable的大部分方法做了同步,HashMap没有,因此,HashMap不是线程安全的。Hashtable不允许key或者value使用null值,而HashMap可以。在内部算法上,它们对key的hash算法和hash值到内存索引的映射算法不同。HashMap的实现原理简单说,HashMap就是将key做hash算法,然后将hash
陶程
·
2016-05-09 10:39
Java集合源码剖析
[
Java数据结构
]从源码分析HashMap
HashMapHashMap和Hashtable的区别:Hashtable的大部分方法做了同步,HashMap没有,因此,HashMap不是线程安全的。Hashtable不允许key或者value使用null值,而HashMap可以。在内部算法上,它们对key的hash算法和hash值到内存索引的映射算法不同。HashMap的实现原理简单说,HashMap就是将key做hash算法,然后将hash
陶程
·
2016-05-09 10:39
Java集合源码剖析
[
Java数据结构
]从源码分析HashMap
HashMapHashMap和Hashtable的区别:Hashtable的大部分方法做了同步,HashMap没有,因此,HashMap不是线程安全的。Hashtable不允许key或者value使用null值,而HashMap可以。在内部算法上,它们对key的hash算法和hash值到内存索引的映射算法不同。HashMap的实现原理简单说,HashMap就是将key做hash算法,然后将hash
CodeEmperor
·
2016-05-09 10:00
java
Java数据结构
——堆排序实现
package排序; publicclass堆排序{ publicstaticvoidmain(String[]args){ int[]array={3,1,5,7,2,4,9,6,10,8}; System.out.println("数组初始值:"); print(array,10); heapSort(array,10); System.out.println("数组转化后的结果:"); p
qq_22770457
·
2016-05-05 14:00
数据结构
堆排序
java数据结构
java堆排序
Java数据结构
-ArrayDeque 双端队列的简单分析
一、队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。二、双端队列双端队列是只既可以在表的前端进行插入和删除操作,又可以在表的后端进行插入和删除操作。三、ArrayDeque的实现Java中的双端队列是用数组实现的,类的全限名称是java.util.Arr
Buaaroid
·
2016-05-04 16:00
Java数据结构
——中序表达式转后续表达式实现
本来是想找java实现这个的方法,结果昨天晚上找了很久一直找不到java实现的源码(正常并且能看懂的)嗯这只能怪我没有科学上网于是想自己写一个于是有了悲剧の一天从早上8点码到这个时候期间bug无数错误无数我现在没有什么心情BBBB了代码就在下面看不懂私聊问我。是用栈实现的测试用例:输入:1+2*3+(4*5+6)*7= 输出: 123*+45*6+7*+中序转为后序package第三章_表栈和队列
qq_22770457
·
2016-05-03 20:00
java数据结构
后序表达式
java栈
中序表达式
Java后序表达式
Java数据结构
之快速排序
前言 快速排序是面试中非常常见的排序算法,工作中,快速排序的效率也是我们常常用到的,他的发展来源于划分算法,采用的是分治策略.实现思路 先从数组中选择一个pivot, 遍历数组,讲数组中比pivot大的数放到其右边,比其小的放到左边, 直到各区数组长度为1之前,都回到1处执行具体说明如上所示,我们先选择数组中第一个数49作为pivot,在第一次划分之后,会发现数组发生了变
oxuanboy1
·
2016-05-03 12:00
java
数据结构
基础
快速排序
排序算法
Java数据结构
划分算法
前言 在现实生活中,当我们遇见好看的姑娘,我们很可能经验性的把她划分到美女一组里,而长相不那么给力的姑娘,分到别的组里,那么,分组的这么一个过程,其实就是划分算法,在划分算法里,我们往往需要一个pivot,来对姑娘进行分类,在这个例子中,pivot就是颜值实现思路用线性结构存储数据定义数据两端点的指针,分别为leftPar和rightPar,他们指向数据的起始位置0,和数据的结束位置Nl
oxuanboy1
·
2016-05-02 10:00
java
数据结构
android
基础
排序算法
Java数据结构
初试之自定义自己的链表结构类
自定义链表类packagecom.git.base.link; /** * *Title:LinkNode.java *Description:链表结构自定义练习类 *Copyright:Copyright(c)2016 *Company:Sage *@author五虎将 *@date2016年4月28日下午10:36:19 *@version1.0 */ publicclassLinkNode
sqh201030412
·
2016-04-28 23:00
java基础
链表结构
自定义链表结构类
Java数据结构
--排序
最近实验室的技术沙龙开展起来了,我想着讲点基础的,讲讲最基本的排序算法吧。相比于画图讲思想,我更喜欢实现了的代码,所以我就根据代码写一下。(代码默认升序排列)插入排序://插入排序 publicstaticvoidInsertSort(int[]num){ if(num.lengthtmp){ num[j+1]=num[j];//如果比tmp大,则后移 j--; if(jnum[j+1]){ in
a6833916180
·
2016-04-27 15:00
插入排序
排序算法
Java数据结构
与算法之插入排序
前言排序算法可以分为基本排序算法和高级排序算法,如果从基本算法里找出性能最好的算法,那么插入排序算是不二之选了.他的时间复杂度T(n2),但是要比冒泡和选择排序都要快一点.他的实现类似于QQ斗地主中抓牌一样.把一个待排序的数据按照大小,插入一个已经排序好的序列中.如下所示,当你抽牌的时候,系统会自动帮你把牌放入到合适的位置.实现思路用降序排序序列,采用线性结构实现.准备一个数据,这个数据不属于已排
oxuanboy1
·
2016-04-26 17:00
java
数据结构
android
插入排序
排序算法
JAVA数据结构
-数组&简单排序
请参考百度文库。1.数组数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。一维数组一维数组(one-dimensionalarray)实际上是相同类型变量列表。要创建一个数组,你必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:typevar-na
beauty_1991
·
2016-04-25 16:00
java
数据结构
[置顶]
java数据结构
和算法目录(持续更新中)
java数据结构
和算法目录
eson_15
·
2016-04-12 19:00
java
数据结构
算法
[置顶] 【
Java数据结构
】Hashmap、Hashtable、ConcurrentHashMap源码阅读笔记
博主将所有博文整理在Github上:https://github.com/miomin/AndroidDifficultyAndorid学习过程中的重难点整理,包括个人的一些读书笔记和博客。如果你觉得对你有帮助的话,希望可以star活follow一下哟,我会持续保持更新。引言:这几天在捣鼓Hashmap跟Hashtable的源码,其中关注的比较多的就是他两计算在Entry[]数组中index的方法
mxm691292118
·
2016-04-09 20:00
HashMap
Hashtable
《
Java数据结构
与算法》每周一记(1)
想扎实地总结一本数据结构方面的书,每周一篇,尽可能按章节完成,每周一章。综述Today.序言Day1 数组Day2简单排序(冒泡、选择、插入)Day3栈和队列Day4链表Day5递归Day6高级排序(希尔排序与快速排序)Day7二叉树Day8红-黑树Day92-3-4树和外部存储Day10哈希表Day11堆Day12图Day13各种数据结构的应用场合数据结构:数据在计算机内存空间中或磁盘中的组织形
fanpeihua123
·
2016-04-07 21:00
数据结构
《
Java数据结构
和算法》Seven 高级排序 快速排序
基本思想是:通过一趟排序将待排序记录分成独立的两部分,其中一部分的关键字均比另一部分的关键字小,再分别对这两部分进行排序。(1)将数组分成左右两部分(2)递归调用自身对左右两部分排序 public void recQuickSort(int left,int right){ int partition = partitionIt(left,right); recQuickSor
DouDouLee
·
2016-04-02 23:00
《
Java数据结构
和算法》Seven 高级排序 希尔排序
希尔排序基于插入排序,通过加大排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,使数据项大跨度的移动。当这些数据项排过一趟序后,希尔排序算法减小数据项之间的间隔,依次下去直到间隔为1,成为普通插入排序。如下图,以4为间隔的排序的全过程:将0、4、8位对应的数据进行排序,接着右移一位对1、5、9对应位进行排序……以4为间隔排序进行完后数组基本有序。 package Structure; c
DouDouLee
·
2016-04-02 23:00
《
Java数据结构
和算法》Six 递归
递归是一种自己调用自己的编程技术。1、三角数字1、3、6、10、15、21……第n项=n-1项的值+npackage Structure; import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class triangleD { static
DouDouLee
·
2016-03-26 22:00
《
Java数据结构
和算法》双向链表
与单向链表相比,提供了前向遍历的能力。其每个链结点有两个指向其他链结点的引用(next,previous)。双向链表的各种操作看图比较容易理解。 package Structure; class LinkX{ public long dData; public LinkX next; public LinkX previous; public LinkX(long d){
DouDouLee
·
2016-03-21 20:00
《
Java数据结构
和算法》双端链表
与单链表的不同:新增一个对最后一个链结点的引用,使其可以像在表头插入链结点一样在表尾插入结点;而若在单链表的表尾插入结点就需要遍历整个链表直到表尾。//链尾插入 public void insertLast(long dd){ LinkD newLink = new LinkD(dd); if(isEmpty()) first = newLink; else last.
DouDouLee
·
2016-03-19 11:00
《
Java数据结构
和算法》单链表
1、链结点链表中。每个数据项都被包含在链结点中(Link),即Node,每个链结点Link都包含一个data和一个对下一个链结点的引用class Link{ public int iData; public douvle dData; public Link next;//reference to next data }这种类定义有时叫“自引用”式,因为它包含了一个和自己类
DouDouLee
·
2016-03-19 11:00
《
Java数据结构
和算法》栈 分隔符分配
分隔符包括“{“、"["、”(”、“]“、“)“、“}”,每个左分隔符需要右分隔符匹配。同时,在字符串中后出现左分隔符应该比早出现的先匹配。程序从字符串中不断读取字符,每次读取一个字符。若发现是左分隔符,压入栈中;当读到一个右分隔符,弹出栈的左分割符与其比较,如果不匹配则报错。栈中没有左分隔符和右分隔符匹配/一直存在着没有被匹配的分隔符,报错。 //栈 package StructureBrac
DouDouLee
·
2016-03-16 23:00
《
java数据结构
和算法》栈字母逆序
栈只允许访问一个数据项,即最后插入的数据项。用数组实现一个栈如下: class StackX{ private int maxSize; private long[] stackArray; private int top; public StackX(int s){ maxSize = s; stackArray = new long[maxSize]; top = -1
DouDouLee
·
2016-03-15 20:00
《
Java数据结构
和算法》简单排序插入排序
最左边的一个队员0号看作是有序的,从一号开始作为要插入的数据,将1号暂时保存在临时数据temp中,与其左边的0号比较,若比0号矮,将0号右移到刚刚自己的位置(1号),temp插入原来0号的位置,现在0、1号已经拍排好了;现在2号成为要插入的数据项,同样将2号暂时存在temp中,分别与0号与1号比较,直到遇到比他矮的(假设为0号),将1号移到自己的空位2号,自己插入1号,现在0、1、2号已经排好了…
DouDouLee
·
2016-03-15 16:00
《
Java数据结构
和算法》简单排序选择排序
排序从球员队列最左边0开始,记录下最左边队员身高,与下一个队员比较,如果这个队员比最左边的矮,替换刚才的最矮记录,再向右比较过程中不断更新最矮记录,最后得到最矮队员的下标,将他与最左边的队员交换;之后,从最左+1号队员开始以同样的过程比较,得到次矮队员的下标,将其与最左+1号交换……public void selectSort(){ int out,in,min; /*外层循环用循环变量
DouDouLee
·
2016-03-15 15:00
《
Java数据结构
和算法》简单排序冒泡排序
假设有N个运动员,编号0--N-1,从最左边开始:0与1比较,若0比1高,两者交换;接着1与2比较,若1比2高1与2交换……此次最高的排到最右边了完成了一个排序;再一次从左到右比较到N-2号,此次排序次高的排到了N-2号……public void bubbleSort(){ int out,in; for(out=nElems-1;out>1;out--) for(in=0;ina[
DouDouLee
·
2016-03-14 23:00
java数据结构
与算法分析总结第一篇(基础)
1.递归简论递归是不是循环推理机制:答:不是,递归是方法调用方法本身,但我们并没有利用方法本身定义方法的一个实例,例如循环是利用f(5)得到f(5)的值,而递归是利用f(4)得到f(5)的值;递归的四条基本准则:(1)要有基准情况,不然递归无法结束;(2)要不断递进;(3)设计法则:所有的递归调用都能运行(4)合成效益法则:对于一个问题的同一实例时,切勿在递归调用中重复调用;(所以说在计算简单的数
qq_31331965
·
2016-03-14 21:00
java数据结构与算法分析
数据结构和算法(01)之综述
数据结构的概述算法的概述一些定义面向对象编程软件工程对于c++程序员的java
java数据结构
的类库一、数据结构和算法能起到什么作用?数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排。
rjcs888
·
2016-03-12 22:00
java
数据结构
算法
Java数据结构
--HashTable(双散列)
/** *Createdbyrooton16-3-11. */ importjava.lang.Math; publicclassQuadraticProbingHashTable{ privatestaticintDEFAULT_TABLE_SIZE=11; //fields privateintcurrentSize; privateHashEntry[]array; //theHash
Salaku
·
2016-03-11 12:00
[置顶]
java数据结构
学习
本文只记录学习过程积累的代码,而不去详细阐述.一.插入排序插入排序就和站队问题一样,第一个人站排头,然后第二个人和第一个人比身高再确定位置.这样保证了已经站队的队伍始终是有序的,那么第三个人来的话,依次从后比较,如果比他高,则比他高的那人向后平移,直到遇到第一个不比他高的人,则插入在其后面./***插入排序*@paramarr要排序的数组*/ privatestaticvoidInsertSort
u012706811
·
2016-03-07 00:00
java
数据结构
Java数据结构
--HashTable(拉链法)
双向节点/** *Createdbyrooton16-3-6. */ publicclassNode{ publicEdata; publicNodeprev; publicNodenext; publicNode(Etarget,Nodeprev,Nodenext){//链接两个孤立节点 data=target; this.prev=prev; this.next=next; } publicN
Salaku
·
2016-03-06 14:00
Java数据结构
--二叉查找树
BinaryNode类/** *Createdbyrooton16-3-5. */ publicclassBinaryNodeimplementsParent{ privateEitem; privateBinaryNodeleft; privateBinaryNoderight; publicBinaryNode(){ this(null); } publicBinaryNode(Eitem){
Salaku
·
2016-03-05 09:00
Java数据结构
--有序表
Predecessorinterface/** *Createdbyrooton16-3-4. */ publicinterfacePredecessor{ publicListNodegetNext(); publicvoidsetNext(ListNodenode); }ListNodepublicclassListNodeimplementsPredecessor{//链表节点 Eitem;
Salaku
·
2016-03-04 16:00
Java数据结构
--简单二叉树
BinaryTree类/** *Createdbyrooton16-3-3. */ publicclassBinaryTree{ privateEitem;//节点字段 privateBinaryTreeleft;//左分支 privateBinaryTreeright;//右分支 publicEgetItem(){//获得字段的方法 returnitem; } publicBinaryTree(
Salaku
·
2016-03-03 13:00
Java数据结构
----树--红黑树
1、概念红黑树(Red-BlackTree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由RudolfBayer发明的,他称之为"对称二叉B树",它现代的名字是在LeoJ.Guibas和RobertSedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:它可以在O(logn
oChangWen
·
2016-02-28 10:00
java
数据结构
二叉树
红黑树
Java数据结构
----树--平衡二叉树
1、基础知识平衡二叉树(BalancedBinaryTree)又被称为AVL树(有别于AVL算法),且具有以下性质:1.它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。2.其高度一般都良好地维持在O(log2n),大大降低了操作的时间复杂度。3.平衡二叉树的常用算法有红黑树、AVL、Treap等。4.最小二叉平衡树的节点的公式如下F(n)=F(n-1)+
oChangWen
·
2016-02-28 10:00
java
数据结构
二叉树
平衡二叉树
上一页
42
43
44
45
46
47
48
49
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他