- 博客(14)
- 收藏
- 关注
原创 comprable和comparator的区别
comprable和comparator的区别(一)comprable和comparator两个接口都是用于比较的。Compartor接口是Java.util包中的接口,而Comparable是java.lang包中的接口(二)comprable接口中只有一个 int compareTo(T o)方法,该方法返回一个整形值 comparator接口有两个方法
2016-08-29 21:56:08 1438 1
原创 二分法查找
二分法查找(一) 二分法查找又叫折半查找,对于已经按从小到大排好序的数组a[],当要查找某个元素b的时候,先计算(a.length - 1)/2 把该位置上的元素与b比较,如果b比a[(a.length - 1)/2]小,则在a[(a.length - 1)/2]的左边区间找。这是再算出左边区间的中间下标,又把该位置上的元素与b比较,依次类推。比如数组int a[]
2016-08-29 18:37:02 712
原创 8大排序之 ---------归并排序 与时间复杂度
归并排序与时间复杂度--------------------------讲归并排序之前,先讲讲什么事递归?递归就是自己调用自己。比如 f(x)= x^2+ f(x - 1)且f(0)=0;这个就是递归,比如你要求f(5)就必须先求出f(4)又得求出f(3)不断的递归下去直到f(0),这里要是没有f(0)=0,那么它就会一直递归下去直到负无穷。这是不允许的,所以f(0)=0是递归的
2016-08-29 15:02:29 1735
原创 8大排序之-------堆排序与时间复杂度
堆排序-------------------------------------------------- 在介绍堆排序之前先介绍一下什么是完全二叉树,完全二叉树就是在第n层被填满之前,不会开始填第n+1层深度,并且是从左向右填满------------------------------------------------------------------------
2016-08-26 19:52:49 5956 3
原创 8大排序之(五)------简单理解 基数排序 与时间复杂度
什么是基数排序?(一)基数排序的思想:把待排序的整数按位分,分为个位,十位.....从小到大依次将位数进行排序。实际上分为两个 过程:分配和收集。 分配就是:从个位开始,按位数从小到大把数据排好,分别放进0--9这10个桶中;
2016-08-22 19:25:47 10293 1
原创 8大排序之----快速排序与时间复杂度
快速排序(一)快速排序基本思想:采用分治的思想,从待排序的数据中选一个数作为基数(一般是第一个数), 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 再对左右区间重复第二步,直到各区间只有一个
2016-08-16 13:34:13 1008
原创 8大排序之-----(3)选择排序与时间复杂度
选择排序与时间复杂度(一)选择排序的基本思想:选择排序就是每一次从待排序的数据中选出最小的元素,放到已经排好序的数据的最后位 置,直到全部元素排好序。(二)解析过程:比如现在待排序的数据是int s[] = {3,1,5,4,6,8,7,9,0,2} 第一趟,首先s
2016-08-15 14:26:49 1623 2
原创 8大排序之---(2)希尔排序
希尔排序 (一)基本思想:希尔排序: 其实就是加强版的插入排序。首先把待排序的数据根据增量分成几个子序列,对子序列进行插入排序, 直到增量为1,直接进行插入排序; 增量 的选择:一般为数组长度的二分之一,再变为原来增量的二分之一....直到增量为1比如数据:int a []
2016-08-12 14:24:42 600
原创 8大排序之-----(一)插入排序与时间复杂度
(一)什么是插入排序呢? 插入排序就是每次把待排序的数据一个数据插入到已经排好序的正确位置。就好比,你左手拿着扑克牌,用右手去取牌的时候,把取到的牌放到左手正确的位置。比如我们要排序4,3,5,7,6,2,1,9,88,0。(1)我们先假设下标为0的数据是排好的,即4是排好序的,那么接下来就要3,5,7,6,2,1,88,0.中每次取出一位放到数组的正确
2016-08-11 14:50:45 8679 2
原创 深入理解----ThreadLocal的工作原理
ThreadLocal 是什么? ThreadLocal是一个线程内部数据的存储类,通过它可以在指定的线程中存储数据,数据存储之后,只有在指定线程中可以获得到存储的数据,对于其他线程来说则无法获取到数据。下面通过一个例子来了解ThreadLocal对象:public class ThreadLocalTest { private static ThreadLocal t =
2016-08-10 13:17:10 533
原创 静态链表 -静态链表的插入与删除
静态链表 1. 静态链表:相当于用数组来实现线性表的链式存储结构,但实际上它在内存中还是连续的存储空间 静态链表的每一个节点都包含两部分,分别是数据data和游标cur(游标是指该存储元素的下一个元素所在数组对应的标) 2.需要注意的是:第一个节点不存放数据data,并且游标cur指向第一个不存放数据的元素的下标。
2016-08-08 10:56:56 5396
原创 java—原子性
原子性 java中的原子性:原子意为不可再发分的,最小的。原子性 可以应用于除了long和double之外的所有基本类型之上的“简单操作” 原子操作:在操作完成之前不会被线程调度器中断。 比如 a =1 ;return a ;这些在java里面都是原子操作, 但
2016-08-06 12:57:36 932
原创 数据结构与算法- 栈与队列的实现
栈与队列 栈:又叫做后进先出(LIFO)表,对栈的基本操作只能是进栈(push)和出栈(pop)。而且这些操作只能在一个栈的栈顶进行。 栈的实现:栈既可以用链表实现也可以用顺序表实现,但栈一般用顺序表(数组)实现。因为所有的操作都是在栈顶,那么在插入和删除的情况下,这两个表的时间复杂度都是一样的。在
2016-08-05 10:37:53 1116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人