自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 《算法(第四版)》排序-----堆排序

1.什么是堆?讲堆排序之前,先了解一下什么是堆。堆其实相当于一种数据结构,它的本质是一种数组对象,但是它里面的内同又是一颗完全二叉树结构,它的特点是父节点的值大于(或小于)两个子节点的值,常常用于优先队列、堆排序等。堆在数组中的索引有如下的特点。数组索引为k的元素,它的父节点的索引为[k/2](下取整),它的两个子节点索引为2k, 2k+1,依次类推2.堆排序的基本过程(1

2016-04-09 12:00:45 1603

原创 《算法(第四版)》排序-----优先队列

在实际应用中,我们常常不一定要求整个数组全部有序,或者不需要一次就将它们排序,可能只需要当前数组的键值最大的元素或最小的元素,这时就类似于总在处理下一个优先级最高的元素,在这种情况下一个合适的数据结构应该支持两种操作:删除最大元素和插入元素。这种类型叫做优先队列  实现这种数据结构的方法有两种,一种是简单的数组或链表来实现,一种是具有高效的二叉堆来实现,在本文中我们就是采用二叉堆来实现的。

2016-04-08 22:02:04 1529

原创 java基础 ----- clone

clone,克隆,记得以前在看api时第一次看到这个函数时还想呢,这啥玩意,估计又什么高深的玩意。。。。然而在实际编码时会常常发现一个问题:java在除了基本类型变量赋值时,两个对象之间的赋值,常常其中一个属性改变后,另一个也就同时改变了,这常常不是我们想要的,我们只是想要对象A的全部属性,但是对象A,B成为连体人,还想能各自操作,互不影响,这个时候就要clone了一个典型的调用c

2016-04-08 11:58:03 357

原创 【Java集合源码剖析】Hashtable源码剖析

参考文章地址:http://blog.csdn.net/ns_code/article/details/36191279Hashtable简介    Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。    Hashtable也是JDK1.0引入的类,是线

2016-04-08 10:38:53 408

原创 【Java集合源码剖析】HashMap源码剖析

HashMap是最常用的集合类框架之一,它实现了Map接口,所以存储的元素也是键值对映射的结构,并允许使用null值和null键,其内元素是无序的,如果要保证有序,可以使用LinkedHashMap。HashMap是线程不安全的[java] view plain copy package java.util;    import

2016-04-07 22:03:01 344

原创 《算法(第四版)》排序-----快速排序

参考文章:   http://ahalei.blog.51cto.com/4767671/13652851.概念快速排序,听这个名字就能想到它排序速度快,它是一种原地排序(只需要一个很小的辅助栈,注意不是数组),且将长度为N的数组排序所需的时间和NlgN成正比缺点是:非常脆弱,在实现时一定要注意几个小细节(下面详细讲),才能避免错误。2.基本思想:随机找出一个数

2016-04-07 14:33:34 10596 1

原创 《算法(第四版)》排序-----归并排序

归并排序基本原理是将两个有序的数组,在合并的过程中进行排序成一个更大的有序数组。归并排序的时间复杂度为NlogN,缺点是需要额外的内存空间归并排序的实现方法是:创建一个适当大小的数组然后将两个输入数组中的元素一个个从小到大的放入这个数组中。将两个数组抽象化的归并方法如下:方法名为merge(a,lo,mid,hi),它会将子数组a[lo...mid]  a[mid+

2016-04-06 14:56:09 2629 1

转载 【Java集合源码剖析】Vector源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35793865Vector简介    Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。    Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步

2016-04-06 10:26:08 331

转载 【Java集合源码剖析】LinkedList源码剖析

对比了一下jdk1.6和jdk1.8的源码,差别有点太大了,所以决定以大神的jdk1.6分析的为主,先把基础的学会,再弄新的参考的文章来源:http://blog.csdn.net/ns_code/article/details/35787253LinkedList简介    LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可

2016-04-04 14:42:05 318

原创 《算法(第四版)》排序-----希尔排序

由“插入排序”可知,它是一种不稳定的算法,当序列已经接近有序时,排序速度较快,但是如果最小的在最后面,那可能需要最小的交换了n-1次才能换到最前面。希尔排序在插入排序的基础上进行了改进,交换不相邻的元素,以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序,具体做法如下。1.假设数组长度为N,先以较大的增量gap将N进行划分几组,例如数组为{2,4,8,1,9,10,5,6,7,3

2016-04-02 21:49:47 926 1

原创 《算法(第四版)》排序-----插入排序

插入排序:插入排序与选择排序一样,当前索引左边的所有元素都是有序的,但和选择排序不一样的是它们的位置不是固定的,可能为了更小的元素腾出空间,它们向后移动,但是当索引达到数组的右端时,数组排序就完成了使用插入排序为一列数字进行排序的过程具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于

2016-04-01 22:47:56 624

原创 《算法(第四版)》排序-----选择排序

选择排序从字面的解释就是先从一个数组中选择出一个,然后再按照一定规则选择出一个,直到全选择完,也就拍完序了。具体解释如下:(以升序为例)step1:先取出数组的第一个元素a[0],然后再后面是所有数据选择,只要有比a[0]小的值,那就把最小值的坐标更新,等全部比较完,把a[0]和a[min]交换step2:在取出a[1],按照第一步的规律,在a[1]后面找比a[1]小的,然后把最小值的

2016-04-01 21:59:50 529

原创 《算法(第四版)》排序-----模板

本书对排序类算法有一个模板,包括了以下几种方法:(1)sort():这个方法里面实现的就是排序的算法(2)less():这个方法里是利用了Comparable接口里的compareTo方法,其中compareTo方法对于本对象与传入的比较对象小于,等于,大于,分别返回负数,0,正数                             这个方法如果compareTo方法结果为负数就返

2016-04-01 21:45:36 1806 1

原创 【Java集合源码剖析】ArrayList源码剖析

之前看了《兰亭风雨的》大神的集合源码剖析的文章,和我的1.8的源码还是有些不同,所以在借鉴大神的剖析基础上,自己也一点点分析一下《兰亭风雨的》的csdn:http://blog.csdn.net/ns_code/article/details/35568011ArrayList简介    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C

2016-04-01 11:19:28 311

转载 【Java集合源码剖析】Java集合框架

转载轻注明出处:http://blog.csdn.net/ns_code/article/details/35564663    Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、

2016-04-01 09:58:05 257

原创 Java基础------知识点整理(十)-----String类

1.String的不变性对String对象进行操作的方法,实际传入的是引用的一个拷贝,每当把String对象作为方法的参数时,都会复制一份引用,而该引用所值的对象其实一直待在单一的物理位置上,从未改变过。字符创对象一旦被初始化就不会发生改变String str = "java";str = "c++";"java"这个对象一旦被创建,将不再改变,后面只是引用“str”指向的地址放生了

2016-03-31 15:26:46 446

原创 Java基础------知识点整理(九)-----异常

1.所有的标准异常类都有两个构造器:一个默认构造器,一个接受字符串作为参数,一遍能把相关信息放入异常对象的构造器:         throw new NullPointerException("t = null");2.Throwable是异常类的根类Throwable       | ---- Error:这种错误一般是JVM抛出的错误,我们不能处理的

2016-03-30 15:51:02 292

原创 java源码分析 ---- Object类

1.常用方法签名//返回此Object运行时类型(1)public final native Class getClass();//返回对象的哈希值(2)public native int hashCode();//判断其他对象是否与此对象"相等"(3)public boolean equals(Object obj);//返回此对象的字符串表示(4)public Strin

2016-03-29 16:14:25 316

原创 Java基础------知识点整理(八)-----内部类

1.内部类:将一个类定义到另一个类里面,对立面的类叫内部类(嵌套类,内置类等)2.内部类特点(1)内部类可以访问外部类中的成员(内部类相当于外部类的一个成员,所以可以直接访问,尤其是private变量),如果不用内部类访问private成员还得先创建一个对象,然后             通过set,get方法才能访问private成员,所以此时为了方便创建内部类(2)外部类要

2016-03-28 17:48:42 330

原创 Java基础------知识点整理(七)-----接口

1.当一个抽象类的方法都是抽象的方法时,这是就可以用另一种形式定义和表示          ------------      接口(关键字  :  interface ),定义时不用class    例:   interface   Demo{              public   abstract   final   int  NUM=1;//全局常量public   abs

2016-03-28 14:00:32 304

原创 Java基础------知识点整理(六)-----抽象

1.方法只有声明,没有具体实现时,该方法就是抽象方法,需要被abstract抽象画,只要含有抽象方法就是抽象类,所以也必须把类也用abstract修饰格式:  abstract   void   f();             abstract  class Instrument{   coding .....}2.抽象类不能被实例化,因为其抽象的方法没有意义3.抽象

2016-03-28 11:56:31 309

原创 Java基础------知识点整理(五)-----多态

学了好久java,也马上要找工作了,是时候把以前写了好几本的笔记整理一下,把基础打牢,把知识坐实。

2016-03-27 22:54:45 421

原创 Java基础------知识点整理(四)-----final关键字

final通常指“这是无法改变的”,不想做改变可能处于两处理由:设计或效率,final可以当成是“最终版本”!final能修饰三种情况: 数据(基本变量和对象)、方法、类1.final数据1.1   修饰的数据特点(1)final修饰的常量必须是基本类型,此时final修饰的常量数值将恒定不变(2)final修饰对象引用时,final仅仅使引用恒定不变,而不是使对象的值不变。也

2016-03-27 17:59:52 287

原创 Java基础------知识点整理(三)----- 继承

学了好久java,也马上要找工作了,是时候把以前写了好几本的笔记整理一下,把基础打牢,把知识坐实。

2016-03-27 15:00:13 304

原创 Java基础------知识点整理(二)

学了好久java,也马上要找工作了,是时候把以前写了好几本的笔记整理一下,把基础打牢,把知识坐实。

2016-03-27 14:55:49 311

原创 Java基础------知识点整理(一)

学了好久java,也马上要找工作了,是时候把以前写了好几本的笔记整理一下,把基础打牢,把知识坐实。

2016-03-25 14:52:11 292

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除