- 博客(32)
- 收藏
- 关注
原创 (7)PriorityQueue总结
1.概念如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜...
2018-07-22 17:11:11
636
原创 (6)HashSet总结
1.概念HashSet类,是存在于java.util包中的类,同时也被称为集合,该容器中只能存储不重复的对象public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable2.构造方法无参:底层为H...
2018-07-22 16:41:32
258
原创 (5)HashMap与HashTable区别
HashMap与HashTable区别1.出现时间HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。 HashMap要比HashTable出现得晚一些。2.继承接口不同hashmap源码为:public class HashMap<K,V> extends AbstractMap<K,V> imp...
2018-07-22 14:06:56
324
原创 (4)HashMap总结
1.概念基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的。public c...
2018-07-22 13:56:59
198
原创 (3)ArrayList、LinkedList区别
对比ArrayList:基于数组 优点:适合随机读取的时候,读取速度快,可直接使用方法get(index)。 缺点:添加值很慢 原因1、往中间添加值时,需要将添加位置以后的所有值往后移动一位 原因2、若是满了之后,每添加一次值就需要一次扩容LinkedList:基于链表 优点:添加、删除速度快,长度不固定。 实现栈和队列方面,Li...
2018-07-22 13:32:25
208
原创 (2)LinkedList总结
LinkedList1.概念LinkedList: 实现一个链表。由这个类定义的链表也可以像栈或队列一样被使用。 定义类:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable...
2018-07-22 13:21:55
143
原创 (1)ArrayList总结
ArrayList1.概念ArrayList就是动态数组,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处 定义类:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAcce...
2018-07-22 11:13:01
226
原创 三分取基法
原栈class Stack{ int top; int[] elem; public Stack(){ this(10); } public Stack(int size){ this.elem = new int[size]; this.top = 0; } /** * 栈是...
2018-06-01 15:39:10
143
原创 堆排序
子、父结点代码public class duiSort { public static void adJust(int[] array,int start,int end){ int tmp = array[start]; for(int i = 2*start+1;i <= end;i = 2*i+1){ ...
2018-05-18 16:10:26
121
原创 聚集相同的元素
聚集和基准相同的元素使和基准元素相同的元素靠近基准位置,重新定义left与right位置原理代码public class Test2 { /** * 找基准 * @param array * @param low * @param high * @return */ public static in...
2018-05-18 14:59:19
340
原创 随机选取基准法
基本的快速排序选取第一个或者最后一个元素作为基准。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为基准。这种情况下虽然最坏情况仍然是O(n^2),但最坏情况不再依赖于输入数据,而是由于随机函数取值不佳。实际上,随机化快速排序得到理论最坏情况的可能性仅为1/(2^n)。所以随机化快速排序可以对于绝大多数输入数据达到O(nlogn)的期望...
2018-05-18 14:34:18
516
原创 快速排序(递归与非递归实现)
递归public class QSort { /** * 找基准 * @param array * @param low * @param high * @return */ public static int partion(int[] array,int low,int high){ int t...
2018-05-16 16:09:59
4876
原创 shell排序算法
思想先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 < d1重复上述的分组和排序,直至所取的增量dt=1,即所有记录放在同一组中进行直接插入排序为止。原理特性Shell排序的执行时间依赖于增量序列。 好的增量序列的共同特征: ① 最后一个增量必须为1; ...
2018-05-16 15:56:49
804
原创 BF算法
思想BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。 代码public class Test1 { /** ...
2018-05-13 15:28:55
358
原创 两个队列实现一个栈
出队原理代码实现class QueueLink{ int elem[]; /** * 队头 */ int front; /** * 队尾 */ int rear; /** * 当前循环内部有效循环个数 */ int usedSize = 0; int allS...
2018-05-11 15:55:21
121
原创 优先级队列:按照优先级存储数据
优先级队列代码实现class PrioLink{ class Entry{ int data; Entry next; int prio; public Entry(){ data = -1; next = null; prio = -1;...
2018-05-11 15:22:34
679
原创 链式队列
链式队列入队代码实现class LinkQueue{ class Entry{ int data; Entry next; public Entry(){ data = -1; next = null; } public Entry(i...
2018-05-11 15:04:15
196
原创 循环队列
循环队列特性:先进先出,浪费一个数据单元,用来判断是否为满原理代码实现class QueueLink{ int elem[]; /** * 队头 */ int front; /** * 队尾 */ int rear; /** * 当前循环内部有效循环个数 */ ...
2018-05-09 13:33:41
1821
原创 链式栈
链式栈入栈入栈使用头插法出栈出栈则为删除头结点的后一个结点 代码实现class LinkStack{ class Entry{ int data; Entry next; /** * 无参构造方法 */ public Entry(){ ...
2018-05-09 13:23:35
118
原创 中缀表达式到后缀表达式的转换
运行级别的比较规则: 1.相同等级的运算符,栈内高于栈外 2.栈外的左括号优先级最高 3.栈内的左括号优先级最低 4.栈外的右括号优先级最低(低到和栈内的左括号相同)public class Constant { public static final int OPERATORS_PRIO_PLUS_IN = 4; //栈内加法 public static fin...
2018-05-09 13:14:10
149
原创 循环单链表、双向链表以及顺序栈
1.循环单链表循环单链表的结构:循环单链表的头插循环链表的尾插循环链表的删除 代码:class TestClink{ class Entry{ int data; Entry next; //无参构造方法 public Entry(){ this....
2018-05-06 15:20:08
265
原创 单链表的逆置以及倒数第K个元素的值
单链表的逆置逆置原理:地址的交换 public Entry revers(){ Entry newHead = null;//定义一个新的头结点用来输出逆置后新的头结点 Entry prev = null;//定义一个前驱(为了达到逆置使前后结点的next逆置使用到) Entry cur = head;//定义一个一定的头结点 ...
2018-04-27 13:45:17
743
1
原创 单链表的环问题以及相交问题
1.求单链表是否有环?若有环,求环的入口点以及环的长度。流程:创建一个有环的单链表——-> 先判断是否有环:public boolean isLoop(){ Entry fast = head;//走得快的结点 Entry slow = head;//走得慢的结点 while(fast != null && f...
2018-04-27 13:00:47
148
原创 Java单链表
单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 链表的插入(1)头插法看图看图(2)尾插法看图看图 (3)插入指定位置看图看图 代码c...
2018-04-25 00:17:05
165
原创 内部类
内部类内部类分为四种:实例内部类、静态内部类、本地内部类、匿名内部类实例内部类1.实例内部类中的方法可以直接使用外部类的实例变量和实例方法。 2.在实例内部类中可以直接用内部类创建对象class OuterClass2{ private int a = 10; private int b = 20; private static int c = 30; ...
2018-04-24 21:57:19
185
原创 类与对象
类的定义以及类方法的调用类的定义:类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。类和对象的关系类:实体的抽象 对象:真正的实体 定义一个类: 给一个类名为Peroson,再给他添加数据为name...
2018-04-23 21:32:38
141
原创 Java之递归、数组排序
例题1.插入一个元素 2.找出最大值以及最小值 3.合并数组 4.填充 5.删除数 6.字符串的输出public class TestDemo1 { //插入元素 public static int[] Insert(int[] array,int val,int index) { int[] array2 = new int[array.leng...
2018-04-18 13:32:28
1660
原创 二维数组的遍历以及四种拷贝方式
例:数组的倒置以及合并public class TestDemo1 { //反转数组 public static void reverse(int[] array){ for(int i =0;i<array.length/2;i++){ int tmp = array[i]; array[i] = ar...
2018-04-15 13:25:07
466
原创 Java之数组的拷贝
两个数的转化class TestSwap{ public int data;}public class TestDemo { public static void swap(int a,int b) { int tmp=a; a = b; b = tmp; } public static void sw...
2018-04-13 03:38:00
139
原创 if else,switch以及
if-else语句对于简单的比较两个或几个已知数的大小,就可以用到if-else来选择:public class TestDemo { public static void max(int a,int b) { if(a>b){ System.out.println("a>b"); }else if(a==b)...
2018-04-11 13:20:09
201
原创 Java之运算符
运算符第一优先级[ ] . ( ) int[] array = {1,2,3,4}; //[]声明一个数组 array[0] = 2; //[]属性获取数组下标里的东西 System.out.println(array); int len = array.length...
2018-04-08 13:34:00
250
原创 数据类型、装箱、拆箱以及引用类型String
数据类型数据类型分为两大类: (1)基本类型 范围大小: byte < ( short = char) < int < long < float < double (2)引用类型 String array etc…装箱Integer i = 10; ...
2018-04-01 15:49:50
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人