自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java泛型实现单链表

class GenericLink<T>{ public Entry<T> head;//定义头结点 class Entry<T>{ private T data;//数据 private Entry<T> next; public Entry(){//初始化结点 data = null; next = null...

2018-05-31 22:31:16 1150

原创 类加载器

每个Java文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。那如何区分class文件每个class文件前四个字节都存放这一个“魔数”(这是一个唯一的标志)类加载器一共有三种     ...

2018-05-29 00:03:02 150

原创 Java反射

反射在Java中,每一个类产生一个.class文件,产生一个class对象。反射就是我们拿到这个class对象,通过反射来获取类的信息。(注:Class对象:任何一个 类都有一个class隐含的静态成员变量class,这个class就指向JVM中的那个类的class。)1,三种获取class对象的方法Student s1 = new Student();//1.s1.getClass() ...

2018-05-27 23:31:49 144

原创 String,StringBuffer和StringBuild

String   StringBuffer  StringBuilder1<,StringString str1 = "hello";str1 = str1+" world";System.out.println(str1);//str1额外生成一个对象对这段代码进行反汇编 可以看出用invokevirtual调用了StringBuilder的构造函数创建了一个StringBuild...

2018-05-27 18:04:26 451

原创 Java中对对象进行排序

1,首先创建一个类class Person3{ private String name; private int age; private double score; public Person3(String name, int age, double score) { super(); this.name = name; this.age = age; this.s...

2018-05-25 00:10:56 27117 7

原创 对象克隆

对象克隆 :clone先观察以下代码class A{ private int k; public int getK() { return k; } public void setK(int k) { this.k = k; } public A(int k){ this.k = k; } }public class Test16 { public static v...

2018-05-24 19:13:23 179

原创 Java接口

接口,在JAVA中是一个抽象类型,(是对行为的一种抽象)是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。创建一个接口(接口中不能有普通方法)interface A{ public int age = 10;//数据成员默认是static final public void fun1();//方法默认是抽象方法 abstract 不能...

2018-05-24 16:18:38 255

原创 抽象类

抽象类概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分,用abstract关键字修饰。首先我们来创建一个抽象类abstract class Animal1{//创建一个抽象类 abstract public void cry();//抽象方法 不做具体实现 ...

2018-05-24 15:40:23 171

原创 Java一维数组及常见操作

1,如何排序数组并搜索某个元素,找到返回下标   调用java中的Arrays.sort()方法进行排序    使用冒泡排序进行排序 2,如何排序数组并插入某个元素   3,如何确定二维数组的上限 所以,可以通过第三个输出语句来确定二维数组的上限a.length 是代表二维数组的行数a[0].length是代表二维数组的列数a代表的是整个二维数组的首地址              4,如何反转数组...

2018-05-22 15:41:27 7600 1

原创 java二维数组

    Java        二维数组总结1,二分查找法 int mid=(low+high)/2;这种方法可能会使int 定义的越界所以我们将它写成int mid=(low+high)>>>1">>>" 最高位补0,所以叫无符号右移无符号右移相当于除法2,创建二维数组  -------------------------------- 所以改变array2[...

2018-05-22 15:33:26 3286

原创 面向对象的特征

OOP语言(面向对象语言)特征:继承  封装   多态  继承:代码的复用  人——学生1,派生类继承了基类的除了构造函数的其他数据成员class Base1{//基类,父类 public int ma;//数据成员 static{ System.out.println("base.static innt!!!!"); } { System.out.println("base.in...

2018-05-21 18:42:37 185 1

原创 基数排序

基数排序属于"分配式排序"(distribution sort),又称"桶子法"(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些"桶"中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),(百度百科)我们来 看一个例子1.比较个位数字,分别将它们放到对应号码的桶里。然后分别取出来(从桶底取出来)。2.比...

2018-05-20 16:36:28 106

原创 归并排序

          归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。如图先排粉色试它们之间有序后(粉色自身就是有序的),在它们有序后,再对绿色进行排序,然后有序后再队蓝色进行排序public static void mergeSort(int[] array){ for(...

2018-05-20 16:17:06 132

原创 堆排序

堆排序这里的堆指的是完全二叉树。我们先来了解一下大根堆与小根堆。大根堆就是二叉树中所有的父节点都大于子节点,小根堆是二叉树中所有子节点都大于父节点。数列从小到大排列需要使用大根堆,从大到小需要小根堆首先我们先看一组数列现在我们将它先组成一个完全二叉树--------》将这个完全二叉树变为一个大根堆    最后将第一个数与最后一个交换这是第一次调整后面每次进行一次大的调整(第一个数的调整)就可以实现...

2018-05-18 12:32:34 476

原创 快速排序的优化

(快速排序的实现请看上一篇)快速排序的优化:1,随机选取基准法2,三分基准法3,当代排序数组当中数据比较少的时候用直接插入法4,聚集相同元素法(基准一样的元素)一,当序列有序的时候快速排序的时间复杂度将会变成O(n2)。        例如:1   2    3   4   5   6    7   8   9        所以我们要采取优化来使基准不会一直被选取最小的那个数。        这...

2018-05-17 20:41:20 184

原创 快速排序

快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。简单来说就是找基准。使基准前面的数都比它大(小),后面的数都比它小(大)。再采用分治思想将问题一次次分为规模较小的子问题,通过这样进行排序,最终实现整个序列的有序。1,首...

2018-05-15 16:46:59 210 1

原创 shell(希尔)排序

       shell排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。Shell排序的执行时间依赖于增量序列。先取一个增量序列(例如:5,3,1)将一串需排序的数列先按照5分组,每组三个数。对每组三个数进行排序。接下来按照3分组,每组五个数。对每组五个数进行排序。接下来是1 也就是进行直接插入排序。Shell排序的执行时间依赖于增量序列。好的增量序...

2018-05-15 15:20:43 13861 1

原创 Kmp算法

KMP算法:KMP算法是由Knuth,Morris,Pratt三位学者研究出的模式匹配算法,大大的避免了重复遍历的情况。算法目的:确定主串中所含子串第一次出现的位置。 在这之前呢,有一个BF算法 (~暴力匹配~)。>_<BF算法设计思想:1,将主串的第pos个字符和模式的第1个字符比较,    2,若相等,继续逐个比较后续字符;3,若不等,从主串的下一字符(...

2018-05-12 21:42:06 348

原创 两个队实现一个栈

两个队列实现栈的操作1>将不为空的队列的数出队并入到另一个队列,直到剩下一个元素2>将剩下的最后一个元素出队,便是实现了栈的后进先 出3>入栈时在两个队列都为空时,随便入到哪个队列中不为空时入到不为空的队列中4>这样出栈时重复之前的步骤public static void enterStack(Queue q1,Queue q2,int val){ Queue p1 =...

2018-05-10 12:02:19 704

原创 链队和优先级队列

链队 1,入队(尾插法)  O(1)2,出队  O(1)使front指向它头结点,rear一直指向尾结点。这样保证入队出 队的复杂度都为o(1)1>初始化一个队class Entry{ int data; Entry next; public Entry(){ data = -1; next = null; } public Entry(int v...

2018-05-10 11:27:33 373 2

原创 链栈----循环队列---用两个栈实现队列

1,链栈(用链表实现栈)>1,初始化栈class Entry{ int data; Entry next; public Entry(){ this.data = -1; this.next = null; } public Entry(int val){ this.data = val; this.next = null; } } ...

2018-05-08 18:02:12 678 1

原创 栈的应用之中缀表达式转后缀表达式

        我们把平时计算的表达式叫做中缀表达式,比如“2+3*5-4*(5-3)”,因为计算符号在数字中间。现在我们需要将中缀表达式转为后缀表达式。     首先我们需要一个  newstack[ ] 栈  和strLast[ ]  数组。1,如果遇到数字将数字存入数组strLast中2,遇到运算符  如果newstack为空就将其存放进去3,遇到运算符  如果newstack不为空则遵循以...

2018-05-08 16:30:00 294 1

原创 Java链表的操作--循环链表、双向链表和顺序栈

Java数据结构1. 循环单链表对于单链表来说,尾节点的next为空,而循环链表的尾节点的next指向头节点1. 首先定义内部结点类Entry,包括data和next。class Entry{    int data;    Entry next;    public Entry(){        this.data = -1;        next = null;    }    publi...

2018-05-06 12:08:43 1024

原创 java实现顺序表

     顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。1,创建一个顺序表                       class TestSqlist{ int usedSize;//顺序表实际长度 int[] elem;/...

2018-05-03 22:13:33 12128 3

空空如也

空空如也

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

TA关注的人

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