![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构与算法
文章平均质量分 61
jay_boolean
这个作者很懒,什么都没留下…
展开
-
Java 数据结构3:队列及Queue源码详解
队列想栈一样,队列(queue)也是表。然而,使用队列时插入在一端进行而删除在另一端进行,遵循先进先出,后进后出原则,就像排队一样应用1、打印机队列2、还有之前线程里面讲到的,线程池的实现,有有界的和无界的阻塞队列Java中队列的实现其中ArrayBlockQueue的源码,在并发的时候已经介绍过了,可以参考https://blog.csdn.net/qq_2279...原创 2018-09-15 23:38:58 · 1569 阅读 · 0 评论 -
Java 数据结构1:数组及ArrayList源码详解
数组和链表数组的实现使得printList以线性时间执行,但是findKth操作花费常熟时间,这是我们众所周知的。但是插入和删除操作的花费却有着很大的开销,这主要看插入或者删除的位置,如果是在位置0上插入,则需要将整个表都后移一位,最坏的情况是O(N)。链表的出现解决了数组中插入和删除的开销,链表由一系列节点组成,每一个节点均包含表元素和到包含该元素后继元的节点的链,我们称之为next链,...原创 2018-09-12 21:19:32 · 335 阅读 · 0 评论 -
Java 数据结构4:二叉搜索树详解
二叉树什么是树,为什么使用树我们知道,对于数组,查找很快,有序的还可以通过二分法查找,但是插入数据却需要移动一些数据的位置。而链表的插入和删除很快,但是查找数据却需要从head开始遍历,那么有没有一种数据结构能同时具备数组查找快的优点以及链表插入和删除快的优点呢?有,就是树,Hello,树先生!树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。一棵树是一些节点的...原创 2018-09-18 20:03:16 · 270 阅读 · 0 评论 -
Java 数据结构2:栈及Stack源码详解
栈栈,相信大家都非常熟悉了,先进先出,后进后出,又叫做LIFO(先进先出)表,一般栈的模型是,存在某个元素位于栈顶,而该元素是唯一的可见元素栈的实现方式1、通过单链表,通过在表的顶端插入实现朴实,通过删除表顶端元素实现pop,top操作知识考察表顶端元素并返回他的值。2、数组实现,就常规push,pop最后的元素,没什么特别的Java中是怎么实现的栈来看一下Stac...原创 2018-09-13 20:36:32 · 166 阅读 · 0 评论 -
Java 数据结构5:Hash详解
哈希表哈希表也称散列表(Hash),Hash表是基于健值对(key - value)直接进行访问的数据结构。但是他的底层是基于数组的,通过特定的哈希函数把key映射到数组的某个下标来加快查找速度,对于哈希表来说,查找元素的复杂度是O(1)我们来看一下HashMap里面的Hash函数是怎么实现的static final int hash(Object key) { int h;...原创 2018-09-25 14:29:11 · 322 阅读 · 1 评论 -
Java 数据结构6:插入,选择,冒泡排序算法
插入排序直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。private static void insertionSort(int[] array) { int j; for (int i = 0; i < array.length; i++) { int temp = ar...原创 2018-09-25 21:19:05 · 154 阅读 · 0 评论 -
Java 数据结构7:快速排序算法详解
快速排序快速排序是对冒泡排序的一种改进,采用分治策略,以减少排序过程中的比较次数。快速排序的平均运行时间是O(NlogN)。他的最坏庆幸性能为O(N2)。快速排序的思想就是分治递归,将原数组按照枢纽元分成左边小右边大的情况,在对分成的2个子数组在进行相同的操作,直至子数组中只有一个元素,这时,所有的数字都被成功排序。他的优先就在时间复杂度比较低。快速排序的基本思路第一趟排序,将数组按...原创 2018-09-25 21:49:24 · 375 阅读 · 0 评论